_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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.