ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
68880 Топик полностью
rezident (14.09.2006 17:06, просмотров: 1) ответил Apтём на Ответ:
Могу ошибаться, но не всегда компилятор точно указывает размер стека, используемый функцией. Пример - функция printf/sprintf. В зависимости от типа преобразуемых данных, она может "отжирать" ОЗУ от десятков байт до пары килоБайт. С месяц назад столкнулся с этим фактом, когда пытался на МК с 256 байт ОЗУ на его борту вывести на 7-сегментный 4-х разрядный индикатор одно единственное число типа float. printf-у для этой операции потребовалось больше 100 байт при выделенных под стек 50 байт и имеющихся в наличии свободных 82 байт. Компилятор благополучно все схавал, ничего не заметил и не сообщил мне об этом. Выловил баг я только при пошаговой отладке в симуляторе. В результате написал свою п/п конвертации, которая занимала не больше десятка байт стека.