_aligned_recalloc_dbg
Изменяет размер блока памяти, который был выделен с помощью _aligned_malloc или _aligned_offset_malloc, и инициализирует память нулями (только отладочная версия).
void * _aligned_recalloc_dbg( void * memblock, size_t num, size_t size, size_t alignment, const char *filename, int linenumber );
Параметры
[входной] memblock
Указатель текущего блока памяти.[входной] num
Число элементов.[входной] size
Размер каждого элемента в байтах.[входной] alignment
Значение выравнивания, которое должно быть целой степенью числа 2.[входной] filename
Указатель на имя исходного файла, который запросил операцию выделения, или NULL.[входной] linenumber
Номер строки в исходном файле, в которой была запрошена операция выделения, или NULL.
Возвращаемое значение
_aligned_recalloc_dbg возвращает указатель void на перераспределенный (и, возможно, перемещенный) блок памяти. Возвращаемое значение — NULL, если размер равен нулю и аргумент буфера не NULL, а также если недостаточно памяти для расширения блока до заданного размера. В первом случае исходный блок освобождается. Во втором случае исходный блок не изменяется. Возвращаемое значение указывает на пространство хранилища, которое гарантированно будет соответственно выровнено для хранения объектов любого типа. Чтобы получить указатель на тип, отличающийся от void, используйте приведение типа для возвращаемого значения.
Будет ошибкой повторно выделить память и изменить выравнивание блока.
Заметки
_aligned_recalloc_dbg — это отладочная версия функции _aligned_recalloc. Если _DEBUG не определен, каждый вызов функции _aligned_recalloc_dbg сокращается до вызова функции _aligned_recalloc. И _aligned_recalloc, и _aligned_recalloc_dbg выполняют перераспределение блока памяти в основной куче, однако _aligned_recalloc_dbg включает различные функции отладки: буферы на обеих сторонах пользовательской части блока для тестирования утечек, параметр типа блока для отслеживания конкретных типов выделения, а также сведения о filename/linenumber для определения источника запросов на выделение.
_aligned_recalloc_dbg перераспределяет указанный блок памяти, добавив немного больше пространства, чем запрошено (num * size), что может быть больше или меньше размера первоначально выделенного блока памяти. Дополнительное пространство используется диспетчером кучи отладки, чтобы связать блоки памяти отладки и предоставить приложению сведения о заголовке отладки и буферы перезаписи. Перераспределение может привести к перемещению исходного блока памяти в другое расположение в куче, а также к изменению размера блока памяти. Пользовательская часть блока заполняется значением 0xCD, а буферы перезаписи — значением 0xFD.
_aligned_recalloc_dbg задает для errno значение ENOMEM в случае сбоя выделения памяти; значение EINVAL возвращается, если необходимый объем памяти (включая ранее упомянутую нагрузку) превышает _HEAP_MAXREQ. Сведения об этих и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlist, and _sys_nerr.
Кроме того, _aligned_recalloc_dbg проверяет свои параметры. Если alignment не является степенью числа 2, эта функция вызывает обработчик недопустимых параметров, как описано в Проверка параметров. Если продолжение выполнения разрешено, эта функция возвращает NULL и задает для errno значение EINVAL.
Сведения о выделении, инициализации и управлении блоками памяти в отладочной версии основной кучи см. в разделе Сведения о куче отладки CRT. Сведения о типах блоков выделения и о том, как они используются, см. в разделе Типы блоков в отладочной куче. Сведения о различиях между вызовом стандартной функции кучи и ее отладочной версии в сборке отладки приложения см. в разделе Версии отладки функций выделения кучи.
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
_aligned_recalloc_dbg |
<crtdbg.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость во введении.
Библиотеки
Только отладочные версии библиотек времени выполнения языка C.
Эквивалент в .NET Framework
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызова неуправляемого кода.