Russian Belarusian English German Japanese Ukrainian

Функция


Выделяет сегмент памяти 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.

Пример


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

Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий


Поиск по сайту