_CrtSetBreakAlloc
Nastaví zarážku číslo objednávky přidělení zadaného objektu (pouze ladicí verze).
long _CrtSetBreakAlloc(
long lBreakAlloc
);
Parametry
- lBreakAlloc
Přidělení číslo objednávky, pro který chcete nastavit bod přerušení.
Vrácená hodnota
Vrátí číslo přidělení zakázky předchozí objekt měl nastavit zarážku.
Poznámky
_CrtSetBreakAllocumožňuje aplikaci provést rozdělení na určitém místě přidělení paměti a zpět sledování původu žádost detekce nevrácení paměti.Funkce používá číslo pořadí přidělení sekvenční objektu přiřazen blok paměti při byla přidělena haldy.Při _DEBUG není definována, volání do _CrtSetBreakAlloc jsou odebrány při úpravě před zpracováním.
Číslo objektu přidělení zakázky je uložen v lRequest pole _CrtMemBlockHeader struktury, které jsou definovány v Crtdbg.h.Při jedné z funkcí výpis ladění je vykazován informace o blok paměti, toto číslo je uzavřena ve složených závorkách, například {36}.
Další informace o _CrtSetBreakAlloc lze použít s dalšími funkcemi pro správu paměti, viz Sledování žádostí o přidělení haldy.
Požadavky
Rutina |
Požadované záhlaví |
---|---|
_CrtSetBreakAlloc |
<crtdbg.h> |
Další informace o kompatibilitě v tématu Compatibility v úvodu.
Knihovny
Ladění verze C Runtime knihovny pouze.
Příklad
// 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);
}
Ekvivalent v rozhraní .NET Framework
Nelze použít Použijte volání funkce standardní C, PInvoke. Další informace naleznete v tématu Příklady vyvolat platformu.