Struktura CMemoryState
Zapewnia wygodny sposób wykryć przecieki pamięci w programie.
struct CMemoryState
Członkowie
Publiczne konstruktory
Nazwa |
Opis |
---|---|
Struktura konstrukcje typu klasa, która kontroluje punkty kontrolne pamięci. |
Metody publiczne
Nazwa |
Opis |
---|---|
Pobiera migawkę bieżącego stanu pamięci (punkt kontrolny). |
|
Oblicza różnicę między dwoma obiektami typu CMemoryState. |
|
Zrzuca podsumowanie wszystkich aktualnie przydzielonego obiektów od poprzedniego punktu kontrolnego. |
|
Drukowanie statystyk alokacji pamięci dla CMemoryState obiektu. |
Uwagi
CMemoryStatejest to struktura i nie klasy podstawowej.
"" Przecieku pamięci dla obiektu jest przydzielane na stercie, ale nie wtedy, kiedy nie jest już wymagane.Takie przecieki pamięci ostatecznie może prowadzić do błędów braku pamięci.Aby przydzielić i deallocate pamięci w programie na wiele sposobów:
Za pomocą malloc/wolnego rodziny funkcji z biblioteki.
Za pomocą funkcji Windows API pamięci zarządzania LocalAlloc/funkcji LocalFree i GlobalAlloc/GlobalFree.
Za pomocą C++ Nowy i usunąć operatorów.
CMemoryState Tylko pomocy diagnostyki pamięci wykryć nieszczelności po użyciu przydzielenia pamięci Nowy operator nie jest dealokowane za pomocą usunąć.Są dwie grupy funkcji zarządzania pamięcią programów-C++ i mieszanie je z Nowy i usunąć nie jest zalecane w tym samym programie.Dodatkowe makra DEBUG_NEW, przewidziano zastąpienie Nowy operator, gdy potrzebny jest plik i śledzenia numer wiersza alokacji pamięci.DEBUG_NEWjest używana, ilekroć zazwyczaj przy użyciu Nowy operatora.
Podobnie jak w przypadku innych Diagnostyka CMemoryState diagnostyki są dostępne tylko w wersjach programu debug.W wersji debugowej musi mieć _DEBUG stałą zdefiniowane.
Jeśli podejrzewasz, program ma przeciek pamięci, można użyć Checkpoint, Różnica, i DumpStatistics funkcje Odkryj różnicę między stanu pamięci (przydzielone obiekty) w dwóch różnych punktach wykonywania programu.Informacje te mogą być użyteczne przy określaniu, czy funkcja jest czyszczenie wszystkich obiektów, który przydziela go.
Jeśli po prostu wiedząc, gdzie występuje brak równowagi w alokacji i dezalokacji nie zapewnia wystarczających informacji, można użyć DumpAllObjectsSince zrzut wszystkich obiektów przydzielona od poprzedniego wywołania funkcji Checkpoint.Ten zrzut przedstawia kolejność alokacji, plik źródłowy i linii, którym przydzielono obiektu (Jeśli używasz DEBUG_NEW dla alokacji) i wyprowadzania obiektu, jego adres i jej rozmiar.DumpAllObjectsSincewymaga również każdy obiekt Dump funkcji informacje o bieżącym stanie.
Aby uzyskać więcej informacji na temat używania CMemoryState i innych diagnostics, zobacz Debugowania aplikacji MFC.
[!UWAGA]
Deklaracje obiekty typu CMemoryState i wywołania funkcji elementów członkowskich powinna być oddzielona przez #if defined(_DEBUG)/#endif dyrektyw.Powoduje to diagnostyki pamięci, które mają zostać uwzględnione jedynie w kompilacjach program debugowania.
Hierarchii dziedziczenia
CMemoryState
Wymagania
Nagłówek: afx.h