Share via


_CrtSetBreakAlloc

Legt einen Haltepunkt für eine angegebene Objekt zuordnungs fest bestellnummer (nur Debugversion).

long _CrtSetBreakAlloc( 
   long lBreakAlloc 
);

Parameter

  • lBreakAlloc
    bestellnummer Zuordnungen für den Haltepunkt festgelegt wird.

Rückgabewert

Gibt die vorherige Objekt zuordnungs bestellnummer zurück, die einen festgelegten Haltepunkt verfügt.

Hinweise

_CrtSetBreakAlloc ermöglicht es einer Anwendung, Speicherverlust Auflistungserkennung auszuführen, indem Sie an einem bestimmten Punkt der Speicherbelegung unterbrochen wird und an den Ursprung der Anforderung erfasst.Die Funktion verwendet die sequenzielle Objekt zuordnungs bestellnummer, die für den Speicherblock zugewiesen ist, als sie im Heap belegt wurde.Wenn _DEBUG nicht definiert wird, werden Aufrufe _CrtSetBreakAlloc während des Präprozessorlaufs entfernt.

Die Objekt zuordnungs bestellnummer wird auf dem lRequest Feld der _CrtMemBlockHeader Struktur gespeichert, in Crtdbg.h definiert.Wenn Informationen über einen Speicherblock Debuggen von Dumps durch eine der Funktionen gemeldet werden, wird diese Zahl in Klammern eingeschlossen, z " {36} ".

Weitere Informationen zum _CrtSetBreakAlloc Speicherverwaltungs mit anderen Funktionen verwendet werden kann, finden Sie unter Nachverfolgungs-Heapbelegungs-Anforderungen.

Anforderungen

Routine

Erforderlicher Header

_CrtSetBreakAlloc

<crtdbg.h>

Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.

Bibliotheken

Debugversionen von nur C .

Beispiel

// 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-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Siehe auch

Referenz

Debug- Routinen