ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
22 декабря
458165 Топик полностью
fk0легенда (29.10.2013 17:18, просмотров: 489) ответил VVB на И вот так для Keil
Примерно так же умеет компилятор проф. уровня им. hitech software. Но увы, доворовались, код отдан индусским студентам. Хотя тоже не панацея: все случаи (а они могут зависеть от входных данных) просмотреть не может. Типичный пример: qsort. Можно, конечно, ввести запрет на рекурсию, и сразу же на вызов по указателю... Но это уже не совсем C будет. BTW может потому и нет таких средств, что их невозможно нормально сделать. В коммерческой среде, понятно, партия сказала надо, с мест ответили yes и сделали что-то рисующее весёлые картинки далеко не факт, что соответствующие действительности. Ввиду перечисленных выше факторов. Или ещё, например, alloca(variable) в коде. Или void f(int arg) { int array[arg]....} И никакой анализатор кода, ни статический, ни в рантайме, не скажет, сколько у нас тут потеряно. И большинство функций ведь, в среднем на большом объёме кода, все примерно одинаковый объём стек отъедают. Нет смысла подсчитывать по байтику. Для грубой оценки можно взять среднее значение и неплохо угадать. Нужно знать глубину вызовов, но это легко получить. Остаются штуки вроде alloca и рекурсии. Тут в каждом конкретном случае от программиста бы получить цифру максимального объёма используемого стека. И просуммировать к имеющимся данным и домножить на Pi.
[ZX]