_Heaplen (dos.h)
Эта переменная содержит длину ближней динамически распределяемой области памяти в малых моделях данных (tinu. small, medium) и описывается следующим образом:
extern unsigned _heaplen;
В моделях small и medium размер сегмента данных вычисляется
следующим образом:
сегмент данных [small,medium] = глобальные данные +
динамически распределяемая область + стек
где размер стека можно настроить с помощью _stklen.
Если _heaplen установлена в 0 (по умолчанию), то программа
выделяет для сегмента данных 64К, и размером динамически распределяемой области будет:
64K - (глобальные данных + стек)
В модели tiny все (включая код) находится в одном и том же
сегменте, поэтому размер сегмента данных вычисляется следующим
образом (с учетом 256 байт для PSP):
сегмент данных [tiny] = 256 + глобальные данные +
динамически распределяемая область + стек
Если в модели tiny _heaplen = 0, то фактический размер динамически распределяемой области вычисляется вычитанием из 64К PSP,
кода, глобальных данных и стека.
В моделях compact и large ближней динамически распределяемой
области нет, и стек имеет собственный сегмент, поэтому сегмент
данных вычисляется так:
сегмент данных [compact, large] = глобальные данные
В модели huge стек находится в отдельном сегменте, и каждый
модуль имеет собственный сегмент данных.