AfxCheckMemory 

BOOL AfxCheckMemory ( );

Wartość zwracany

Niezerowa, jeśli żadne błędy pamięci; inny sposób 0.

Uwagi

Funkcja ta sprawdza poprawność puli pamięci i drukuje komunikaty o błędach zgodnie z wymaganiami. Jeśli funkcja wykryje nie związanej z uszkodzeniem pamięci, drukuje nic.

Sprawdzane są wszystkich bloków pamięci przydzielane na stercie, włączając te przyznane przez nowe , ale nie te, które są przydzielane przez bezpośrednie wywołania podstawowych allocators pamięci, takich jak funkcja malloc lub funkcji systemu Windows GlobalAlloc . Jeśli okaże się, każdy blok jest uszkodzony, wiadomość jest drukowany na danych wyjściowych debugera.

Jeśli dołączysz wiersz

# define nowych DEBUG_NEW

w module programu następnie wezwań do AfxCheckMemory Pokaż nazwy pliku i linia numer gdzie została przydzielona pamięć.

Uwaganbsp;  Jeśli moduł zawiera jeden lub więcej implementacje klasy można zaszeregować, a następnie należy umieścić #define linii po ostatnim zaproszeniu makra IMPLEME&NT_SERIAL.

Ta funkcja działa tylko w wersji debugowej MFC.

Przykład

 / / przykład AfxCheckMemory
CAge * pcage = &nowe CAge (21); nbsp; / / CAge wywodzi się z CObject.
Wiek * strony = new Age (22);     / / Wiek nie pochodzi od CObject.
*(((char*) pcage) - 1) = 99;   / / Uszkodzony poprzedniego bajtu strażnik
Strona *(((char*)) - 1) = 99;    / / Uszkodzony poprzedniego bajtu strażnik
AfxCheckMemory()

Wyniki z programu są następujące:

błąd wyboru pamięci na $0067495F = $63, powinny być $FD
USZKODZENIE: Przed bloku Non-obiekt na $00674960
Non-obiekt przydzielone w pliku test02.cxx(48)
Non-obiekt znajdujący się w $00674960 jest 2 bajty
Błąd wyboru pamięci na $00674905 = $63, powinny być $FD
USZKODZENIE: Przed bloku obiektu na $00674906
Obiekt przydzielone w pliku test02.cxx(47)
Obiekt znajdujący się w $00674906 jest 6 bajtów

Index