|
Программирование >> Перегруженные имена функций и идентификаторы
nosound (dos.h) Глобальные переменные DOS Ниже приведены глобальные переменные Borland С++, доступные только для 16-разрядных приложений DOS. heaplen (dos.h) Эта переменная содержит длину ближней динамически распределяемой области памяти в малых моделях данных (tiny, 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 стек находится в отдельном сегменте, и каждый модуль имеет собственный сегмент данных. ovrbuffer (dos.h) Данная переменная изменяет размер оверлейного буфера и имеет следующий синтаксис: unsigned ovrbuffer = size; Используемый по умолчанию размер оверлейного буфера равен удвоенному размеру наибольшего оверлея. Для большинства приложений этого достаточно. Однако конкретная функция программы может реализовываться через несколько модулей, каждый из которых является оверлейным. Если общий размер этих модулей больше оверлейного буфера, то при частом вызове модулями друг друга будет происходить дополнительный свопинг. Решением здесь будет увеличения размера оверлейного буфера, так что в каждый момент времени памяти будет достаточно, чтобы вместить все оверлеи с частыми перекрестными вызовами. Сделать это можно с помощью установки в требуемый размер (в параграфах) глобальной переменной ovrbuffer в 128К: unsigned ovrbuffer = 0x2000; Для определения оптимального размера оверлейного буфера общего метода не существует. stklen (dos.h) Данная переменная содержит размер стека и имеет следующий синтаксис: extern unsigned stklen; Переменная stklen определяет размер стека для 6 моделей памяти. Минимально допустимый размер стека - 128 слов. По умолчанию назначается размер 4К. В моделях данных small и medium сегмент данных вычисляется следующим образом: сегмент данных [small, medium] = глобальные данных + динамически распределяемая область + стек где размер динамически распределяемой области можно настроить с помощью heaplen. В модели tiny все (включая код) находится в одном и том же сегменте, поэтому размер сегмента данных вычисляется следующим образом (с учетом 256 байт дя PSP): сегмент данных [tiny] = 256 + глобальные данные + динамически распределяемая область + стек В моделях compact и large ближней динамически распределяемой области нет, и стек имеет собственный сегмент, поэтому сегмент данных вычисляется так: сегмент данных [compact, large] = глобальные данные В модели huge стек находится в отдельном сегменте, и каждый модуль имеет собственный сегмент данных.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |