Функция Выделяет сегмент памяти DOS.
Синтаксис #include
int allocmem(unsigned size, unsigned *segp);
Файл, содержащий dos.h
прототип
Описание allocmem для выделения блока свободной
памяти использует системный вызов DOS 0x48 и возв-
ращает в качестве результата адрес сегмента выде-
ленного блока.
size - желаемый размер области памяти в параграфах
(параграф равен 16 байт).
segp - указатель на слово, которому будет присвоен
адрес сегмента нового выделенного блока памяти.
Присваивания не происходит, если запрашиваемого
количества памяти не имеется в наличии.
Все выделяемые блоки выравниваются по параграфам.
allocmem и malloc не могут использоваться вместе.
Возвращаемое allocmem при успешном завершении возвра-
значение щает значение -1. При возникновении ошибки
возвращается число (размер в параграфах наибольше-
го блока памяти, имеющегося в наличии).
Ошибка, возвращаемая из allocmem, устанавливает
_doserrno и глобальную переменную errno в
ENOMEM - Не хватает памяти
Переносимость allocmem уникальна для DOS.
Смотрите также coreleftfreememmallocsetblock
Пример:
#include
#include
#include
int main(void)
{
unsigned int size,segp;
int stat;
size = 64; /* 64 * 16 = 1024 байта */
stat = allocmem(size,&segp);
if(stat == -1)
printf("Выделен сегмент памяти по адресу %x\n",segp);
else
printf("Ошибка! Допустимый максимальный размер = %u\n",stat);
return 0;
}