_CrtSetBreakAlloc

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

long _CrtSetBreakAlloc( 
   long lBreakAlloc 
);

Параметры

  • lBreakAlloc
    Порядковый номер распределения, для которого установить точку останова.

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

Возвращает предыдущий порядковый номер выделения объекта, который владел набор точек останова.

Заметки

_CrtSetBreakAlloc позволяет приложению для обнаружения утечек памяти, breaking на конкретный шаг выделении памяти и трассировкой обратно к началу координат запроса.Функция использует последовательное порядковый номер выделении объектов, присвоенный блок памяти, когда она была выбрана в куче.После _Отладка не указывает, вызовы _CrtSetBreakAlloc удалите во время предварительной обработки.

Порядковый номер выделения памяти объекта хранится в lRequest поле _CrtMemBlockHeader структура, указанная в Crtdbg.h.Если сведения о блоке памяти отмечено одной из функций дампа отладки, этот номер заключен в скобки, например {36}.

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

Требования

Процедура

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

_CrtSetBreakAlloc

<crtdbg.h>

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

Библиотеки

Отладочные версии Библиотеки времени выполнения C только для чтения.

Пример

// crt_setbrkal.c
// compile with: -D_DEBUG /MTd -Od -Zi -W3 /c /link -verbose:lib -debug

/*
 * In this program, a call is made to the _CrtSetBreakAlloc routine
 * to verify that the debugger halts program execution when it reaches
 * a specified allocation number.
 */

#include <malloc.h>
#include <crtdbg.h>

int main( )
{
        long allocReqNum;
        char *my_pointer;

        /* 
         * Allocate "my_pointer" for the first
         * time and ensure that it gets allocated correctly
         */
        my_pointer = malloc(10);
        _CrtIsMemoryBlock(my_pointer, 10, &allocReqNum, NULL, NULL);

        /* 
         * Set a breakpoint on the allocation request
         * number for "my_pointer"
         */
        _CrtSetBreakAlloc(allocReqNum+2);
        _crtBreakAlloc = allocReqNum+2;

        /* 
         * Alternate freeing and reallocating "my_pointer"
         * to verify that the debugger halts program execution
         * when it reaches the allocation request
         */
        free(my_pointer);
        my_pointer = malloc(10);
        free(my_pointer);
        my_pointer = malloc(10);
        free(my_pointer);
}

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

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

См. также

Ссылки

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