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