_calloc_dbg

Выделяет несколько блоков памяти в куче с пробелом для заголовка отладки и перезапишет буферы (отладочные версии).

void *_calloc_dbg( 
   size_t num,
   size_t size,
   int blockType,
   const char *filename,
   int linenumber 
);

Параметры

  • num
    Запрошенное число блоков памяти.

  • size
    Запрошенный размер каждого блока памяти (в байтах).

  • blockType
    Запрошенный тип блока памяти. _CLIENT_BLOCK OR _NORMAL_BLOCK.

    Дополнительные сведения о типах блока распределения и способы их использования см. в разделе Типы блоков в куче отладки.

  • filename
    Указатель на имя исходного файла, запросившего операцию распределения или NULL.

  • linenumber
    Номер линии в исходном файле, в котором было запрошено или операции выделения памяти NULL.

filename и linenumber параметры доступны только при _calloc_dbg вызывает явно или _CRTDBG_MAP_ALLOC константа препроцессора была определена.

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

При успешном завершении, эта функция возвращает указатель на части пользователя последнего выделенного блока памяти вызывает новую функцию обработчика, либо возвращает NULL.Полное описание возвращенной расширения функциональности см. в разделе " примечания ".Дополнительные сведения о том, как новая функция обработчика используется см. в разделе calloc функция.

Заметки

_calloc_dbg отладочная версия calloc функция.После _Отладка не определяет каждый вызов _calloc_dbg уменьшает к вызову calloc.Оба calloc и _calloc_dbg выберите num блоки памяти в куче, но базовой _calloc_dbg есть несколько функций отладки:

  • Буферы с обеих сторон части пользователя блока, который необходимо проверять утечки.

  • Параметр типа блока, чтобы отслеживать определенные типы распределения.

  • filename/linenumber сведения, чтобы указать начало координат запросов выделения.

_calloc_dbg выделяет каждый блок памяти с немного больше места, чем запрошено size.Дополнительное пространство используется диспетчером отладочной кучи для связывания блоки памяти, отладки и предоставить приложению отладочные данные заголовка и перезаписать буферы.При выборе части блока пользователя блока заполняется значением 0xCD и каждый из буферов, чтобы переписать заполнено 0xFD.

_calloc_dbg наборы errno В ENOMEM, если выделение памяти завершается неудачей. EINVAL возвращает если необходимо объем памяти (включая дополнительную нагрузку, упомянутые ранее) превышает _HEAP_MAXREQ.Дополнительные сведения об этом и других кодах ошибок см. в разделе errno, _doserrno, _sys_errlist и _sys_nerr.

Сведения о том, как блоки памяти, выделенные инициализируются и управляемые в отладочной версии базовой кучи см. в разделе Управление памятью и куча отладки.Дополнительные сведения о различиях между вызовом стандартная функция кучи отладки на соответствие его версия в отладочном построении приложения, см. в разделе Использование отладочной версии для базовой версии.

Требования

Процедура

Обязательный заголовок

_calloc_dbg

<crtdbg.h>

Дополнительные сведения о совместимости см. Совместимость во введении.

Пример

// crt_callocd.c
/*
 * This program uses _calloc_dbg to allocate space for
 * 40 long integers. It initializes each element to zero.
 */
#include <stdio.h>
#include <malloc.h>
#include <crtdbg.h>

int main( void )
{
        long *bufferN, *bufferC;

        /* 
         * Call _calloc_dbg to include the filename and line number
         * of our allocation request in the header and also so we can
         * allocate CLIENT type blocks specifically
         */
        bufferN = (long *)_calloc_dbg( 40, sizeof(long), _NORMAL_BLOCK, __FILE__, __LINE__ );
        bufferC = (long *)_calloc_dbg( 40, sizeof(long), _CLIENT_BLOCK, __FILE__, __LINE__ );
        if( bufferN != NULL && bufferC != NULL )
              printf( "Allocated memory successfully\n" );
        else
              printf( "Problem allocating memory\n" );

        /* 
         * _free_dbg must be called to free CLIENT type blocks
         */
        free( bufferN );
        _free_dbg( bufferC, _CLIENT_BLOCK );
}
  

Эквивалент в .NET Framework

Неприменимо. Для c# используйте стандартная функция PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Подпрограммы отладка

calloc

_malloc_dbg

_DEBUG