CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
allocmem
allocmem
Функция Выделяет сегмент памяти DOS. Синтаксис #include<dos.h> int allocmem(unsigned size, unsigned *segp); Файл, содержащий dos.h прототип Описание allocmem для выделения блока свободной памяти использует системный вызов DOS 0x48 и возвращает в качестве результата адрес сегмента выделенного блока. size - желаемый размер области памяти в параграфах (параграф равен 16 байт). segp - указатель на слово, которому будет присвоен адрес сегмента нового выделенного блока памяти. Присваивание адреса слову, указателем которого является segp, не происходит, если запрашиваемого количества памяти не имеется в наличии. Все выделяемые блоки выравниваются по параграфам. allocmem и malloc не могут использоваться вместе. Возвращаемое allocmem при успешном завершении возвра- значение щает значение -1. При возникновении ошибки возвращается число (размер в параграфах наибольшего блока памяти, имеющегося в наличии). Ошибка, возвращаемая из allocmem, устанавливает _doserrno и глобальную переменную errno в ENOMEM - Не хватает памяти Переносимость allocmem уникальна для DOS. Функция не поддерживается Windows. Смотрите также coreleft,freemem,malloc,setblock. Пример: #include<dos.h> #include<alloc.h> #include<stdio.h> 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; }