有篇文章如是说:
“
用MFC开发的应用程序,在DEBUG版模式下编译后,都会自动加入内存泄漏的检测代码。在程序结束后,如果发生了内存泄漏,在Debug窗口中会显示出所有发生泄漏的内存块的信息,以下两行显示了一块被泄漏的内存块的信息:
E:\TestMemLeak\TestDlg.cpp(70) : {59} normal block at 0x00881710, 200 bytes long.
Data: <abcdefghijklmnop> 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70”
我在debug模式下,就分配了一块内存空间,怎么没有提示类似的信息?
“
用MFC开发的应用程序,在DEBUG版模式下编译后,都会自动加入内存泄漏的检测代码。在程序结束后,如果发生了内存泄漏,在Debug窗口中会显示出所有发生泄漏的内存块的信息,以下两行显示了一块被泄漏的内存块的信息:
E:\TestMemLeak\TestDlg.cpp(70) : {59} normal block at 0x00881710, 200 bytes long.
Data: <abcdefghijklmnop> 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70”
我在debug模式下,就分配了一块内存空间,怎么没有提示类似的信息?
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here int nSize=80;
char* p= new char[nSize];}
对吧?我是在debug模式下的。
还有Debug下的内存泄露很难看懂,有什么规律吗?我的程序里面老是报CString类里造成的内存泄露,是怎么回事儿?
Dumping objects ->
e:\test\test33\test33\test33dlg.cpp(153) : {76} normal block at 0x00B85EC8, 4 bytes long.
Data: < > CD CD CD CD
Object dump complete.
The program '[2120] test33.exe: Native' has exited with code 0 (0x0).你把代码帖出来看看
void CTestView::OnDraw(CDC* /*pDC*/)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here //Memory leak
CDC* pDC=GetDC();
}
你移动或调整该应用程序的大小, 就可以看到它的内存使用量不断扩大.
char* p= new char[nSize];要释放的
我的project -》setting 是 win32 debug 的。请问这个内存泄露的输出是在 output里面的debug标签里面吧?
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here int nSize=80;
char* p= new char[nSize];
TRACE("看看这里是不是被调用过\n");}
我的版本的是vs6+sp6,这个会不会有影响哦?