AfxCheckMemory 

BOOL AfxCheckMemory ( );

Rückgabewert

Ungleich NULL, wenn keine Speicherfehler; andernfalls 0.

Bemerkungen

Diese Funktion überprüft den freien Speicher-Pool und druckt Fehlermeldungen wie erforderlich. Wenn die Funktion keine Speicherfehler erkennt, gibt es nichts.

Alle derzeit auf dem Heap reserviert Speicherblöcke werden überprüft, einschließlich derer von neuen , aber nicht die direkte Aufrufe zur zugrunde liegenden Speicher Allocators, wie z. B. die Malloc -Funktion oder der GlobalAlloc -Funktion von Windows reserviert reserviert. Wenn jeder Block gefunden wird, beschädigt zu sein, wird eine Meldung an die Debugger-Ausgabe gedruckt.

Wenn Sie die Zeile aufnehmen

# Definieren Sie neue DEBUG_NEW

in einem Programmmodul zeigen dann nachfolgende Aufrufe von AfxCheckMemory der Dateiname und die Zeilennummer wo der Speicher reserviert wurde.

Hinweis&Nbsp;  Wenn Ihr Modul eine oder mehrere Implementierungen der serialisierbaren Klassen enthält, dann müssen Sie die #define Zeile nach dem letzten IMPLEMENT_SERIAL -Makro-Aufruf.

Diese Funktion funktioniert nur in der Debugversion des MFC.

Beispiel

 / / Beispiel für AfxCheckMemory
Käfig * Pcage = new CAge (21); &Nbsp; / / Käfig CObject abgeleitet ist.
Alter * Seite = Neues Alter (22);     / / Alter ist nicht von CObject abgeleitet wurden.
*(((Char*) Pcage) - 1) = 99;   / / Beschädigte vorhergehenden Garde Byte
*(((Char*) Seite) - 1) = 99;    / / Beschädigte vorhergehenden Garde Byte
AfxCheckMemory()

Die Ergebnisse aus dem Programm sind wie folgt:

kontrollkästchen Speicherfehler an $0067495F = $63, sollte $FD
Schaden: Vor Non-Object Block bei $00674960
Non-Objekt in der Datei test02.cxx(48)
Non-Objekt am $00674960 ist 2 Bytes lang
Kontrollkästchen Speicherfehler an $00674905 = $63, sollte $FD
Schaden: Vor dem Objekt Block bei $00674906
Objekt in Datei test02.cxx(47)
Objekt am $00674906 ist sechs Bytes lang

Index