Russian Belarusian English German Japanese Ukrainian

Farmalloc

CuBook05

Функция

Размещает данные в глобальной динамической области памяти.
 
Синтаксис

#include<alloc.h>
void far *farmalloc(unsigned long nbytes);
 
Прототип

alloc.h
 
Описание

Функция farmalloc выделяет блок в глобальной динамической области памяти, размер блока в байтах передается в аргументе nbytes. При выделении блока глобальной динамической области памяти вы должны помнить следующее:
- может быть выделена вся память с произвольной выборкой (ЗУПВ).
- могут быть выделены блоки, размером более 64К.
- для доступа к выделяемым блокам используются "дальние" указатели (с атрибутом "far").
В моделях памяти: компактных, больших и сверх больших, функция соответствует, однако не идентична, malloc. Она получает параметр типа long unsigned, в то время, как malloc использует параметр типа unsigned. В модели памяти tiny эту функцию использовать нельзя.
 
Возвращаемое значение

Функция farmalloc возвращает указатель на новый выделенный блок или нуль, если для размещения нового блока не хватило памяти.
 
Переносимость

Функция уникальна для системы DOS.
 
Пример

#include<stdio.h>
#include<alloc.h>
#include<string.h>
#include<dos.h>

int main(void)
{
char far *fptr;
char *str = "Hello";
fptr = farmalloc(10);
movedata(FP_SEG(str), FP_OFF(str), FP_SEG(fptr), FP_OFF(fptr), strlen(str));
printf("Строка с указателем far: %Fs\n", fptr);
farfree(fptr);
return 0;
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

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