_srealloc()

Выделить, перевыделить или освободить область памяти

Прототип:

#include <malloc.h>
void * _srealloc( void *ptr,
size_t old_size,
size_t new_size );

Аргументы:

ptr
NULL или указатель на блок памяти, который вы хотите перераспределить.
old_size
Текущий размер блока в байтах.
new_size
Размер выделяемого блока в байтах.

Библиотека:

libc

Описание:

Когда значение аргумента ptr равно NULL, выделяется новый блок памяти размером new_size байт.

Если значение new_size равно нулю, соответствующая функция _sfree() вызывается для освобождения old_size байты памяти, на которые указывает ptr.

Иначе функция _srealloc() перераспределяет выделенную ранее память, выполнив одно из следующих действий:


Note: Не используйте указатели на ранее выделенные блоки после вызова этой функции. Эти указатели возможно будут указывать на освобожденную память. Это может привести к катастрофическими последствиями, после выделения нового блока.

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

buffer = (char *)_srealloc( buffer, 100, 200 );

В приведенном выше примере буфер может быть устанавлен в NULL, если функция будет выполнена с ошибкой, и указатель на ранее выделенную память больше не будет указывать на блок выделенной памяти. Если буфер - единственный указатель на блок памяти, то доступ к этой памяти потерян.

Функция _srealloc() перераспределяет память из кучи.

Вы должны использовать _sfree(), чтобы освободить память, выделенную _srealloc().

Возвращаемое значение:

Указатель на начало перераспределенной памяти или NULL, если доступной памяти недостаточно, или если значение аргумента new_size равно нулю.

Классификация:

ЗОСРВ «Нейтрино»

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

calloc(), free(), realloc(), _scalloc(), _sfree(), _smalloc()




Предыдущий раздел: Описание API системной библиотеки