I am trying to use _CrtDumpMemoryLeaks() to display memory leaks in my programs.
But it does not display anything except for returning 0 in case of no memory leaks and 1 in case there is a leak.
The link here shows the output should be like:
Detected memory leaks!
Dumping objects ->
D:\VisualC++\CodeGuru\MemoryLeak\MemoryLeak.cpp(67) : {60}
normal block at 0x00324818, 4 bytes long.
Data: <, > 2C 00 00 00
Object dump complete.
Can anyone suggest the correct way of using this function.
Download the sample from the following link. You have to set the following parameters to direct output to console.
// Send all reports to STDOUT
_CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE );
_CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT );
_CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE );
_CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT );
_CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE );
_CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT );
After searching why it not work in my code I find the follow points:
- If there is no detected leak then this method print nothing.
- Not all allocation method are affected. For example CoTaskMemAlloc are not affected.
- The warning must be enabled with _CrtSetReportMode and _CrtSetReportFile.