Udostępnij za pośrednictwem


Struktura CMemoryState

Zapewnia wygodny sposób wykryć przecieki pamięci w programie.

struct CMemoryState

Członkowie

0wzsd007.collapse_all(pl-pl,VS.110).gifPubliczne konstruktory

Nazwa

Opis

CMemoryState::CMemoryState

Struktura konstrukcje typu klasa, która kontroluje punkty kontrolne pamięci.

0wzsd007.collapse_all(pl-pl,VS.110).gifMetody publiczne

Nazwa

Opis

CMemoryState::Checkpoint

Pobiera migawkę bieżącego stanu pamięci (punkt kontrolny).

CMemoryState::Difference

Oblicza różnicę między dwoma obiektami typu CMemoryState.

CMemoryState::DumpAllObjectsSince

Zrzuca podsumowanie wszystkich aktualnie przydzielonego obiektów od poprzedniego punktu kontrolnego.

CMemoryState::DumpStatistics

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

Zobacz też

Informacje

Wykres hierarchii