Описание функций Си

Farcallo



     farcalloc

Функция Выделяет блок памяти в глобальном heap'e.

Синтаксис #include

void far * farcalloc(unsigned long nunits, unsigned long unitsz);

Файл, содержащий alloc.h прототип

Описание Функция farcalloc распределяет память в глобальном heap'e под массив, состоящий из nunits элементов, причем каждый элемент длиной unitsz байтов.

При распределении памяти глобальном heap'e помните следующее:

- может быть распределена вся память с произволь- ной выборкой (ЗУПВ);

- могут быть размещены блоки, размером более 64К;

- для доступа к размещаемым блокам используются "дальние" указатели (с атрибутом "far").

В моделях памяти: компактных, больших и сверх больших, farcalloc соответствует calloc, однако не идентична. Она использует параметр типа long unsigned, в то время, как обычные функции (напри- мер malloc) используют параметры unsigned.

В модели памяти tiny эту функцию использовать нельзя.

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

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

Смотрите также

Пример:

#include

#include

#include

#include

int main(void) { char far *fptr; char *str = "Hello"; /* выделить память */ fptr = farcalloc(10,sizeof(char)); if(fptr) { /* скопировать строку "Hello" в выделенный блок памяти. */ /* Замечание. Используется функция movedata, поскольку вы можете работать в малой (small) модели памяти, в которой нельзя использовать функции копирова- ния строки, которые подразумевают, что пара- метры имеют тип near */ movedata(FP_SEG(str),FP_OFF(str),FP_SEG(fptr),FP_OFF(fptr), strlen(str)); /* вывести строку. Обратите внимание на модификатор F*/ printf(" Строка с указателем far: %Fs\n",fptr); /* освободить память */ farfree(fptr); } return 0; }



Содержание раздела