_CrtSetBreakAlloc

Legt einen Haltepunkt für eine angegebene Bestellnummer der Objektzuordnung fest (nur Debugversion).

Syntax

long _CrtSetBreakAlloc(
   long lBreakAlloc
);

Parameter

lBreakAlloc
Zuordnungsbestellnummer, für die der Haltepunkt festzulegen ist.

Rückgabewert

Gibt die vorherige Bestellnummer der Objektzuordnung zurück, die einen festgelegten Haltepunkt hatte.

Hinweise

_CrtSetBreakAlloc ermöglicht es einer Anwendung, eine Speicherverlusterkennung durchzuführen, indem an einem bestimmten Punkt der Speicherbelegung angehalten und der Ursprung der Anforderung nachverfolgt wird. Die Funktion verwendet die sequenzielle Bestellnummer der Objektzuordnung, die dem Speicherblock zugewiesen wird, wenn sie im Heap reserviert wurde. Wenn _DEBUG nicht definiert ist, werden Aufrufe von _CrtSetBreakAlloc während der Vorverarbeitung entfernt.

Die Nummer der Objektzuordnungsreihenfolge wird im lRequest Feld der _CrtMemBlockHeader Struktur gespeichert, definiert in Crtdbg.h. Wenn Informationen zu einem Speicherblock von einer der Debugdumpfunktionen ausgegeben werden, wird die Nummer in geschweiften Klammern angezeigt, z. B. {36}

Weitere Informationen dazu, wie _CrtSetBreakAlloc mit anderen Speicherverwaltungsfunktionen verwendet werden kann, finden Sie unter Nachverfolgen von Heapreservierungsanforderungen. Weitere Informationen darüber, wie Speicherblöcke in der Debugversion des Basisheaps zugeordnet, initialisiert und verwaltet werden, finden Sie unter CRT Debug Heap Details.

Anforderungen

Routine Erforderlicher Header
_CrtSetBreakAlloc <crtdbg.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Libraries

Nur Debugversionen von C-Laufzeitbibliotheken

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);

        /*
         * 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);
}

Siehe auch

Debugroutinen