23 General utilities library [utilities]

23.10 Memory [memory]

23.10.11 C library memory allocation [c.malloc]

[ Note: Заголовок <cstdlib> объявляет функции, описанные в этом подпункте. ]end note

void* aligned_­alloc(size_t alignment, size_t size); void* calloc(size_t nmemb, size_t size); void* malloc(size_t size); void* realloc(void* ptr, size_t size);

Effects: Эти функции имеют семантику, указанную в стандартной библиотеке C.

Remarks: Эти функции не пытаются выделить память с помощью вызова ​::​operator new() ([support.dynamic]).

Хранилище, выделенное непосредственно с помощью этих функций, неявно объявляется доступным (см. [basic.stc.dynamic.safety]) При выделении, перестает объявляться доступным при освобождении и не обязательно перестает объявляться доступным в результате undeclare_­reachable() вызова. [ Note: Это позволяет существующим библиотекам C оставаться незатронутыми ограничениями на указатели, которые не извлекаются безопасно, за счет предоставления гораздо меньшего количества вариантов сборки мусора и обнаружения утечек для malloc()-распределенных объектов. Это также позволяет malloc() реализовать с отдельной ареной распределения, минуя обычную declare_­reachable() реализацию. Вышеупомянутые функции никогда не должны преднамеренно использоваться в качестве замены declare_­reachable(), и вновь написанный код настоятельно рекомендуется обрабатывать память, выделенную этими функциями, как если бы она была выделена с помощью operator new. ] end note

void free(void* ptr);

Effects: Эта функция имеет семантику, указанную в стандартной библиотеке C.

Remarks: Эта функция не пытается освободить память путем вызова . ​::​operator delete()

См. Также: ISO C 7.22.3.