Freigeben über


_CrtSetBreakAlloc

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

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 Bestellnummer der Objektzuordnung wird im lRequest-Feld der _CrtMemBlockHeader-Struktur gespeichert, die in "Crtdbg.h" definiert ist. Wenn Informationen zu einem Speicherblock von einer der Debugdumpfunktionen ausgegeben werden, wird die Nummer in geschweiften Klammern angezeigt, z. B. {36}.

Weitere Informationen zur möglichen Verwendung von _CrtSetBreakAlloc mit anderen Speicherverwaltungsfunktionen finden Sie unter Nachverfolgen von Heapzuweisungsanforderungen. Weitere Informationen darüber, wie Speicherblöcke in der Debugversion des Basisheaps zugeordnet, initialisiert und verwaltet werden, finden Sie unter Details zum CRT-Debugheap.

Anforderungen

Routine

Erforderlicher Header

_CrtSetBreakAlloc

<crtdbg.h>

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

Bibliotheken

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

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Debugroutinen