Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

MALLOC(3X)

НАЗВАНИЕ
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(3C). Описываемые функции находятся в библиотеке malloc и подключаются при использовании опции -lmalloc команд cc(1) и ld(1).

Функция malloc возвращает указатель на блок размером не менее size байт, который можно использовать в произвольных целях.

Аргументом функции free является указатель на блок, предварительно выделенный с помощью malloc; после выполнения free блок может быть выделен вновь, а хранящаяся в нем информация теряется (см. однако описание функции mallopt, команда M_KEEP).

В случае выхода за границы блока, выделенного функцией malloc, а также при вызове функции free с аргументом, не являвшимся результатом malloc, эффект будет непредсказуем.

Функция realloc изменяет размер блока, на который указывает ptr, до размера size и возвращает указатель на возможно смещенный блок. Часть содержимого блока до наименьшего из нового и старого размеров не изменяется.

Функция calloc выделяет пространство для массива из nelem элементов, каждый размером elsize байт, и заполняет массив нулями.

С помощью функции mallopt можно управлять алгоритмами выделения и освобождения памяти. Допускаются следующие значения аргумента cmd:
M_MXFAST Установить величину maxfast равной аргументу value. Алгоритм отводит место сразу для большой группы блоков, размер которых не превосходит maxfast, а затем по запросам очень быстро выдает их. Подразумеваемое значение maxfast равно 24.
M_NLBLKS Установить величину numblks равной аргументу value. Каждая из вышеупомянутых "больших групп" содержит numblks блоков. Число блоков должно быть больше 0; подразумеваемое значение numblks равно 100.
M_GRAIN Установить величину grain равной аргументу value. Размеры всех блоков, не превосходящие maxfast, округляются вверх до ближайшего кратного grain. Значение grain должно быть больше 0; подразумеваемое значение таково, чтобы обеспечить правильное выравнивание по границе данных любого типа. При изменении grain аргумент value округляется вверх до ближайшего кратного значения по умолчанию.
M_KEEP Сохранить данные в освобождаемом блоке до следующих вызовов функций malloc, realloc или calloc. Эта опция предоставлена только для совместимости со старой версией malloc; пользоваться ей не рекомендуется.

Возможные значения аргумента 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

СМ. ТАКЖЕ
brk(2), malloc(3C).

ДИАГНОСТИКА
Функции malloc, realloc и calloc возвращают пустой указатель NULL, если нет достаточного количества памяти. Когда realloc возвращает указатель NULL, то блок, на который указывает ptr, остается неизменным. Если функция mallopt вызывается после выделения памяти или ее аргументы cmd или value имеют недопустимые значения, то возвращается не ноль. В противном случае результат равен нулю.

ПРЕДОСТЕРЕЖЕНИЯ
По сравнению с пакетом malloc(3C) описанные функции расходуют память менее экономно.

Размер программы также оказывается больше, чем при использовании malloc(3C).

В отличие от malloc(3C) описанные функции не обеспечивают сохранение информации в освобожденных блоках (если только не использовалась опция M_KEEP функции mallopt).

Недокументированные особенности malloc(3C) не поддерживаются.

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...