Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

Allocmem

CuBook05

Функция

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

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


Защитный код Обновить