include für CMemoryState
-
Hallo
Ich will mein Programm auf memory leaks prüfen. Habe in der Hilfe die Klasse CMemoryState gefunden.
#ifdef _DEBUG CMemoryState oldMemState, newMemState, diffMemState; oldMemState.Checkpoint(); #endif int *pInt = new int( 5 ) ; #ifdef _DEBUG newMemState.Checkpoint(); if( diffMemState.Difference( oldMemState, newMemState ) ) { TRACE( "Memory leaked!\n" ); } #endifLeider bekomme ich die Fehlermeldung: 'CMemoryState' : undeclared identifier .
Also anscheinend fehlt mir die richtige #include. In der Hilfe finde ich allerdings nichts dazu.Kann mir jemand weiter helfen?
Auch für Hinweise auf andere Möglichkeiten memory leaks aufzuspüren wäre ich dankbar.
Danke im voraus.
-
Hallo,
mit welcher Entwicklungsumgebung wird gearbeitet? Doch hoffentlich nicht mit einer Express, in der es MFC nicht gibt. In meiner Hilfe steht übrigens:
Requirements
Header: afx.hEin Header, der über stdafx.h sowieso mit eingebunden wird, wenn man eine MFC-unterstützte Anwendung erstellt.
MFg
-
Hallo,
habe afx.h eingefügt. Dann bekomme ich allerdings die folgenden Fehlermeldungen:
--------------------Configuration: TestApplication - Win32 Debug--------------------
Compiling...
StdAfx.cpp
Compiling...
TestApplication.cpp
Linking...
nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCD.lib(new.obj)
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/TestApplication.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.TestApplication.exe - 4 error(s), 0 warning(s)
Habe dann auch stdafx.h probiert, mit dem folgenden Ergebnis:
--------------------Configuration: TestApplication - Win32 Debug--------------------
Compiling...
StdAfx.cpp
Compiling...
TestApplication.cpp
c:\testapplication\testapplication.cpp(40) : error C2065: 'CMemoryState' : undeclared identifier
c:\testapplication\testapplication.cpp(40) : error C2146: syntax error : missing ';' before identifier 'oldMemState'
c:\testapplication\testapplication.cpp(40) : error C2065: 'oldMemState' : undeclared identifier
c:\testapplication\testapplication.cpp(40) : error C2065: 'newMemState' : undeclared identifier
c:\testapplication\testapplication.cpp(40) : error C2065: 'diffMemState' : undeclared identifier
c:\testapplication\testapplication.cpp(41) : error C2228: left of '.Checkpoint' must have class/struct/union type
c:\testapplication\testapplication.cpp(49) : error C2228: left of '.Checkpoint' must have class/struct/union type
c:\testapplication\testapplication.cpp(50) : error C2228: left of '.Difference' must have class/struct/union type
c:\testapplication\testapplication.cpp(52) : error C2065: 'TRACE' : undeclared identifier
Error executing cl.exe.TestApplication.exe - 9 error(s), 0 warning(s)
Vielleicht erzähle ich mal was über das eigentliche Programm, um das es geht. Ich entwickle es mit Visual C++ 6.0 unter Windows in AnsiC++, da es auch unter anderen Betriebssystemen (andere Compiler) benutzt werden soll.
Früher habe ich mit Borland C++ Builder gearbeitet (auch für AnsiC++). Darin gibt es "CodeGuard", mit dem man memory leaks aufspüren kann, ohne dafür das Programm selber ändern zu müssen. Gibt es so etwas in Visual nicht?
-
erinneremichnicht schrieb:
Früher habe ich mit Borland C++ Builder gearbeitet (auch für AnsiC++). Darin gibt es "CodeGuard", mit dem man memory leaks aufspüren kann, ohne dafür das Programm selber ändern zu müssen. Gibt es so etwas in Visual nicht?
Versuch es doch mal mit:
http://www.codeproject.com/KB/applications/leakfinder.aspx oder http://www.codeproject.com/KB/applications/visualleakdetector.aspxEs gibt natürlich auch kommerzielle Alternativen. Die kannst Du Dir aber bestimmt selbst ergoogeln...
-
Wenn afx.h oder afxwin.h verwendet werden, dann müssen diese Header vor allen anderen included werden!