所以這是首要的家庭作業項目。我的整個程序正在運行,這是一個處理動態內存分配的中間/高級項目。我無法弄清楚如何顯示正常輸出的行數。我試圖看看關於這個主題的其他問題,但我似乎無法找出幫助我的原因。有關如何設置行號的任何建議?內存泄漏。行號
這裏是我的"LeakWatcher.cpp"
#ifndef IMWATCHINGYOULEAK
#define IMWATCHINGYOULEAK
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#ifdef _DEBUG
inline void* operator new(size_t nSize, const char * lpszFileName, int nLine)
{ return ::operator new(nSize, 1, lpszFileName, nLine); }
inline void __cdecl operator delete(void * _P, const char * lpszFileName, int nLine)
{ ::operator delete(_P, _NORMAL_BLOCK, lpszFileName, nLine); }
#define DEBUG_NEW new(__FILE__, __LINE__)
#define MALLOC_DBG(x) _malloc_dbg(x, 1, __FILE__, __LINE__);
#define malloc(x) MALLOC_DBG(x)
#define new DEBUG_NEW
#endif // _DEBUG
#endif // #include guard
而且我main()
int main()
{
_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);
try
{
Directory().Run();
}
catch (...)
{
cout << "Uncaught Exception" << endl;
}
_CrtDumpMemoryLeaks();
return 0;
}
您是否嘗試過打印'__FILE__'或'__LINE__'? – gldraphael 2014-10-06 21:42:35
你的問題沒有任何意義。你說什麼「正常輸出」?據我所知,這裏根本沒有輸出代碼(除了「catch」外 - 就是你在說什麼?)。什麼阻止你輸出行號在你想要的時間和地點? – 2014-10-06 21:42:50
@DavidSchwartz:這似乎是MS VC++代碼。如果檢測到泄漏,_CrtDumpMemoryLeaks會將信息轉儲到控制檯。 – 2014-10-06 21:49:27