CMemoryState

CMemoryState nie klasy podstawowej.

CMemoryState zapewnia wygodny sposób wykryć, że przecieki pamięci w programie. "Przeciek pamięci" występuje, gdy 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. Istnieje kilka sposobów przydzielania i dezalokuj pamięć programu:

Diagnostyka CMemoryState tylko pomóc, wykrywania przecieków pamięci, gdy pamięć przydzielona, za pomocą operatora new dealokowaniu nie, za pomocą usunąć. Pozostałe dwie grupy funkcji zarządzania pamięcią są programy-C++ i mieszanie je z nowych i usunąć w tym samym programie nie jest zalecane. Dodatkowe makra, DEBUG_NEW, jest dostarczana do zastąpienia operatora new , gdy potrzebujesz pliku i śledzenia numer wiersza alokacji pamięci. DEBUG_NEW jest używany zawsze, gdy normalnie byłoby użyć operatora new.

Podobnie jak w przypadku innych diagnostyki, Diagnostyka CMemoryState tylko są dostępne w wersji debugowej i programu. W wersji debugowej musi mieć stałą _DEBUG , definicja.

Jeśli podejrzewasz, że Twój program ma przeciek pamięci, można użyć funkcji punktu kontrolnego, Różnicai DumpStatistics do wykrycia różnicy między stan pamięci (obiekty przydzielone) w dwóch różnych punktach wykonywania programu. Informacje te mogą być użyteczne przy ustalaniu, czy funkcja jest czyszczenie wszystkie obiekty, które alokuje.

Jeśli po prostu wiedząc, gdzie występuje nierównowaga w alokacji i dezalokacji nie dostarcza wystarczających informacji, można użyć funkcji DumpAllObjectsSince , zrzucić wszystkie obiekty przydzielona od poprzedniego wywołania do punktu kontrolnego. Ten zrzut przedstawia kolejność alokacji, plik źródłowy i linii, gdy obiekt został przydzielony (jeżeli używasz DEBUG_NEW dla alokacji) i wyprowadzania obiektu, jego adres i jej rozmiar. DumpAllObjectsSince również wywołuje funkcję zrzutu każdego obiektu informacje o bieżącym stanie.

Aby uzyskać więcej informacji na temat korzystania z CMemoryState i innych diagnostyki, zobacz Obsługę debugowania MFC w Visual C++ Programmer's Guide.

Uwaga   Deklaracje obiekty typu CMemoryState i wzywa do funkcji powinna być oddzielona przez #if defined(_DEBUG)/#endif dyrektyw. Powoduje to, że narzędzia diagnostycznego pamięci mają zostać uwzględnione jedynie z debugowaniem kompilacje programu.

Czło&nkowie klasy |nbsp; Wykres hierarchii

Index