совершенно верно. Мы Вам толкуем об этом, а Вы как будто не хотите понимать - никуда память не теряется
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено bialix 20 августа 2003 г. 17:46
В ответ на: Ну не совсем так (+) отправлено Беня 20 августа 2003 г. 15:59

если Вам надо единовременно иметь N байт, то линкер Вам выделит такой сегмент памяти, который позволит вместить максимальное N - равно как и при использовании стековой модели.
Ну просто посчитайте:
допустим в функции main Вы используете 60 байт
все остальные функции вызываются из main
допустим вложенных вызовов нету
тогда Вам остается 256-60-размер_стека_подпрограмм байт
для ЛЮБОЙ функции.
Как Вы не понимаете? Overlapped - значит перекрывающийся сегмент.
Это значит в одни и те же адреса будут помещаться локальные неперекрывающиеся переменные - полностью аналогично использованию стековой модели хранения данных.

Если Вы нам не верите, то просто напишите маленькую тестовую программку со множеством функций и локальных переменных. Скомпилите и посмотрите map-файл - и Вы увидите как перекрываются локальные переменные и что реально занимаемая память внутреннего ОЗУ будет меньше просто суммы всех локальных переменных.

Не верите - проверьте.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru