_CrtSetBreakAlloc
Imposta un punto di interruzione su un numero ordine specificato di allocazione di oggetti piccoli (versione di debug solo).
long _CrtSetBreakAlloc(
long lBreakAlloc
);
Parametri
- lBreakAlloc
Numero ordine di allocazione, per il quale impostare il punto di interruzione.
Valore restituito
Restituisce il numero ordine precedente di allocazione dell'oggetto che ha un punto di interruzione impostato.
Note
_CrtSetBreakAlloc consente di eseguire il rilevamento delle perdite di memoria interrompendo in un punto specifico dell'allocazione di memoria e tracciatura dell'origine della richiesta.La funzione utilizza il numero ordine sequenziale di allocazione dell'oggetto assegnato al blocco di memoria quando è stata allocata nell'heap.quando _DEBUG non è definito, le chiamate a _CrtSetBreakAlloc vengono ignorati durante la pre-elaborazione.
Il numero di ordini di allocazione di oggetti viene archiviato in il più lRequest campo _CrtMemBlockHeader struttura, definita in Crtdbg.h.Quando le informazioni relative a un blocco di memoria vengono restituite da una delle funzioni dump di debug, questo numero è racchiuso tra parentesi, come {36}.
per ulteriori informazioni su come _CrtSetBreakAlloc può essere utilizzato con altre funzioni di gestione della memoria, vedere Requisiti di rilevamento di allocazione heap.
Requisiti
routine |
Intestazione di associazione |
---|---|
_CrtSetBreakAlloc |
<crtdbg.h> |
Per ulteriori informazioni sulla compatibilità, vedere compatibilità nell'introduzione.
Librerie
versioni di debug di Librerie di runtime del linguaggio C solo.
Esempio
// 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);
}
Equivalente .NET Framework
Non applicabile. Per chiamare la funzione c standard, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di pinvoke.