Condividi tramite


_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.

Vedere anche

Riferimenti

Procedura di debug