НАЗВАНИЕ
malloc, free, realloc, calloc, mallopt, mallinfo - быстрое выделение оперативной памяти
СИНТАКСИС
#include <malloc.h>
char *malloc (size) unsigned size;
void free (ptr) char *ptr;
char *realloc (ptr, size) char *ptr; unsigned size;
char *calloc (nelem, elsize) unsigned nelem, elsize;
int mallopt (cmd, value) int cmd, value;
struct mallinfo mallinfo ( )
ОПИСАНИЕ
Функции malloc и free предоставляют простой универсальный механизм выделения и освобождения памяти, работающий значительно быстрее пакета . Описываемые функции находятся в библиотеке malloc и подключаются при использовании опции -lmalloc команд и .
Функция malloc возвращает указатель на блок размером не менее size байт, который можно использовать в произвольных целях.
Аргументом функции free является указатель на блок, предварительно выделенный с помощью malloc; после выполнения free блок может быть выделен вновь, а хранящаяся в нем информация теряется (см. однако описание функции mallopt, команда M_KEEP).
В случае выхода за границы блока, выделенного функцией malloc, а также при вызове функции free с аргументом, не являвшимся результатом malloc, эффект будет непредсказуем.
Функция realloc изменяет размер блока, на который указывает ptr, до размера size и возвращает указатель на возможно смещенный блок. Часть содержимого блока до наименьшего из нового и старого размеров не изменяется.
Функция calloc выделяет пространство для массива из nelem элементов, каждый размером elsize байт, и заполняет массив нулями.
С помощью функции mallopt можно управлять алгоритмами выделения и освобождения памяти. Допускаются следующие значения аргумента cmd:
Установить величину maxfast равной аргументу value. Алгоритм отводит место сразу для большой группы блоков, размер которых не превосходит maxfast, а затем по запросам очень быстро выдает их. Подразумеваемое значение maxfast равно 24.
Установить величину numblks равной аргументу value. Каждая из вышеупомянутых "больших групп" содержит numblks блоков. Число блоков должно быть больше 0; подразумеваемое значение numblks равно 100.
Установить величину grain равной аргументу value. Размеры всех блоков, не превосходящие maxfast, округляются вверх до ближайшего кратного grain. Значение grain должно быть больше 0; подразумеваемое значение таково, чтобы обеспечить правильное выравнивание по границе данных любого типа. При изменении grain аргумент value округляется вверх до ближайшего кратного значения по умолчанию.
Сохранить данные в освобождаемом блоке до следующих вызовов функций malloc, realloc или calloc. Эта опция предоставлена только для совместимости со старой версией malloc; пользоваться ей не рекомендуется. <