Freigeben über


_CrtSetAllocHook

Installiert eine clientdefinierte Zuornungsanzahl-Funktion indem das Haken in den Prozess der C-Laufzeit - Debuggen die Option Familie (nur Debugversion).

_CRT_ALLOC_HOOK _CrtSetAllocHook(
   _CRT_ALLOC_HOOK allocHook 
);

Parameter

  • allocHook
    Neue clientdefinierte Zuornungsanzahl-Funktion, auf den ein Hook den Prozess der C-Laufzeit - Debuggen die Option Familie.

Rückgabewert

Gibt die zuvor definierte Reservierungshookfunktion oder NULL zurück, wenn allocHookNULList.

Hinweise

_CrtSetAllocHook ermöglicht einer Anwendung in den Hook eine eigene Zuornungsanzahl-Funktion in den Prozess C-Laufzeit-Debugbibliotheks-Speicherbelegungs erfolgen.Im Ergebnis wird jeder Aufruf einer Zuornungsanzahl-Funktion zum Debuggen eines Speicherblocks zuzuteilen neu zuzuordnen, Freigeben oder einen Aufruf an die Hookfunktion der Anwendung._CrtSetAllocHook stellt eine Anwendung mit einer einfachen Möglichkeit zum Testen, wie die Anwendung unzulängliche Arbeitsspeicher situationen Muster Zuordnungen, die Möglichkeit zum Überprüfen und behandelt die Möglichkeit, Zuordnungsinformationen für die spätere Analyse zu protokollieren.Wenn _DEBUG nicht definiert wird, werden Aufrufe _CrtSetAllocHook während des Präprozessorlaufs entfernt.

Die _CrtSetAllocHook-Funktion installiert die neue clientdefinierte Zuornungsanzahl-Funktion, die in allocHook angegeben wird, und gibt die zuvor definierte Hookfunktion zurück.Im folgenden Beispiel wird veranschaulicht, wie ein clientdefinierter Hookfunktion einen Prototyp entwickelt werden soll:

int YourAllocHook( int allocType, void *userData, size_t size, int 
blockType, long requestNumber, const unsigned char *filename, int 
lineNumber);

Das allocType-Argument gibt den Typ des Datenvorgangs Zuordnungen (_HOOK_ALLOC, _HOOK_REALLOCund _HOOK_FREE) an, der den Aufruf der Hookfunktion der Zuordnung ausgelöst hat.Wenn der Typ der Zuordnung startende _HOOK_FREEist, ist userData ein Zeiger auf den Benutzer datenabschnitt des freizugebenden Speicherblocks, etwa.Wenn jedoch der Typ der Zuordnung startende _HOOK_ALLOC oder _HOOK_REALLOCist, ist userDataNULL , da der Speicherblock noch nicht zugeordnet wurde.

size gibt die Größe des Speicherblocks in Bytes an blockType gibt den Typ des Speicherblocks an, die requestNumber ist zuordnungs Objekt bestellnummer des Speicherblocks, und falls verfügbar, filename und lineNumber , geben Sie den Namen der Quelldatei und Zeilennummer, in der der Zuordnung startende Vorgang initiiert wurde.

Nachdem die Hookfunktion die Verarbeitung beendet hat, muss sie einen booleschen Wert zurückgeben, der dem primären C-Laufzeit-Zuordnungs Prozess widerspiegelt, wie fortgesetzt wird.Wenn die Hookfunktion den Hauptknoten Zuordnungen Prozess fortgesetzt werden, als ob die Hookfunktion nie aufgerufen wurde, sollte die Hookfunktion TRUEzurückgeben.Dadurch wird der ursprünglichen auslösenden Vorgang Zuordnung ausgeführt wird.Mithilfe dieser Implementierung kann die Hookfunktion Zuordnungsinformationen für die spätere Analyse erfassen und speichern, ohne den aktuellen Vorgang Zuordnungen oder den Status des Debugheaps zu beeinflussen.

Wenn die Hookfunktion den Hauptknoten Zuordnungen Prozess fortgesetzt werden, als ob der Zuordnung startende Vorgang aufgerufen wurde, ist fehlgeschlagen, und es sollte die Hookfunktion FALSEzurückgeben.Mithilfe dieser Implementierung kann die Hookfunktion eine breite Palette von Arbeitsspeicher Zustände Zustände und Debugheap simulieren, um zu testen, wie die Anwendung jede Situation behandelt.

Die Hookfunktion übergeben, NULL_CrtSetAllocHookzu löschen.

Weitere Informationen zum _CrtSetAllocHook Speicherverwaltungs mit anderen Funktionen verwendet werden kann oder wie schreibt, clientdefinierte Hookfunktionen finden Sie unter Schreiben Debuggings-Hookfunktionen besitzenbesitzen.

HinweisHinweis

_CrtSetAllocHook wird nicht unterstützt. /clr:pure

Anforderungen

Routine

Erforderlicher Header

_CrtSetAllocHook

<crtdbg.h>

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

Bibliotheken

Debugversionen von nur C .

Beispiel

Ein Beispiel dafür, wie _CrtSetAllocHookfinden Sie unter crt_dbg2verwendet.

.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

_CrtGetAllocHook