_CrtSetBreakAlloc
Ustawia punkt przerwania na określony obiekt numer zamówienia alokacji (tylko wersja debugowania).
long _CrtSetBreakAlloc(
long lBreakAlloc
);
Parametry
- lBreakAlloc
Numer zamówienia alokacji, dla którego ma być ustawiony punkt przerwania.
Wartość zwracana
Zwraca poprzedni obiekt alokacji numeru zamówienia odpowiadającego miał punkt przerwania, ustaw.
Uwagi
_CrtSetBreakAllocpozwala przeprowadzić wykrywania przecieków pamięci podziału w określonym punkcie alokacji pamięci i śledzenie wstecz do pochodzenia żądanie aplikacji.Funkcja używa numer kolejny obiekt alokacji zlecenia przypisane do bloku pamięci, gdy został alokowany na stercie.Gdy _DEBUG nie jest zdefiniowana, wzywa do _CrtSetBreakAlloc są usuwane w czasie wstępnego przetwarzania.
Numer zamówienia obiekt alokacji jest przechowywany w lRequest pola _CrtMemBlockHeader struktury zdefiniowane w Crtdbg.h.Gdy informacje o bloku pamięci zostanie zgłoszona przez jedną z funkcji debugowania zrzutu, numer ten jest ujęty w nawiasy klamrowe, takich jak 36}.
Aby uzyskać więcej informacji dotyczących sposobu _CrtSetBreakAlloc może być używany z innymi funkcjami zarządzania pamięci, zobacz Śledzenia żądań alokacji sterty.
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
_CrtSetBreakAlloc |
<crtdbg.h> |
Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.
Biblioteki
Debug wersje biblioteki uruchomieniowej c tylko.
Przykład
// 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);
}
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.