|
MALLOC(3X)НАЗВАНИЕ СИНТАКСИС #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 возвращает указатель на блок размером не менее size байт, который можно использовать в произвольных целях. Аргументом функции free является указатель на блок, предварительно выделенный с помощью malloc; после выполнения free блок может быть выделен вновь, а хранящаяся в нем информация теряется (см. однако описание функции mallopt, команда M_KEEP). В случае выхода за границы блока, выделенного функцией malloc, а также при вызове функции free с аргументом, не являвшимся результатом malloc, эффект будет непредсказуем. Функция realloc изменяет размер блока, на который указывает ptr, до размера size и возвращает указатель на возможно смещенный блок. Часть содержимого блока до наименьшего из нового и старого размеров не изменяется. Функция calloc выделяет пространство для массива из nelem элементов, каждый размером elsize байт, и заполняет массив нулями. С помощью функции mallopt можно управлять алгоритмами выделения и освобождения памяти. Допускаются следующие значения аргумента cmd:
Возможные значения аргумента cmd определены во включаемом файле <malloc.h>. Функцию mallopt можно вызывать несколько раз, но только до выделения первого маленького блока. Функция mallinfo выдает информацию об использовании памяти. Она возвращает структуру: struct mallinfo { int arena; /* Общий размер выделенного пр-ва */ int ordblks; /* Число обычных блоков */ int smblks; /* Число маленьких блоков */ int hblks; /* Число захваченных блоков */ int hblkhd; /* Пр-во в заголовках захвач. блоков */ int usmblks; /* Пр-во в исп-мых маленьких блоках */ int fsmblks; /* Пр-во в своб. маленьких блоках */ int uordblks; /* Пр-во в исп-мых обычных блоках */ int fordblks; /* Пр-во в своб. обычных блоках */ int keepcost; /* Плата за исп-ие опции сохранения */ } Структура определена во включаемом файле <malloc.h>. Каждая из функций выделения возвращает указатель на область памяти, подходящую (после возможного преобразования типа указателя) для хранения произвольных данных. ФАЙЛЫ /usr/lib/libmalloc.a СМ. ТАКЖЕ ДИАГНОСТИКА ПРЕДОСТЕРЕЖЕНИЯ Размер программы также оказывается больше, чем при использовании malloc(3C). В отличие от malloc(3C) описанные функции не обеспечивают сохранение информации в освобожденных блоках (если только не использовалась опция M_KEEP функции mallopt). Недокументированные особенности malloc(3C) не поддерживаются. |
|