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;
}
|