(轉(zhuǎn))(轉(zhuǎn))如何調(diào)試MFC的內(nèi)存泄露
VC++ IDE 的默認(rèn)狀態(tài)(VC6)是沒有啟用內(nèi)存泄漏檢測機(jī)制的,也就是說即使某段代碼有內(nèi)存泄漏,調(diào)試會(huì)話的 Output 窗口的 Debug 頁不會(huì)輸出有關(guān)內(nèi)存泄漏信息。你必須設(shè)定以啟用內(nèi)存泄漏檢測機(jī)制。
按下面的方法使用調(diào)試堆函數(shù)
在XXXView.cpp中添加下面粗體行
你再看看輸出結(jié)果,是不是有很多的內(nèi)存泄漏?
#define _CRTDBG_MAP_ALLOC
#include<stdlib.h>
#include<crtdbg.h>
CXXXView::~CXXXView()
{
}
文章出處:DIY部落(http://www.diybl.com/course/3_program/c++/cppjs/2007925/73624.html)








你也許還沒用過的vc++的調(diào)試的功能
From: http://www.cnitblog.com/Raistlin/archive/2005/12/14/5380.html
剛剛在IT博客網(wǎng)閑逛的時(shí)候看到了孤獨(dú)的夜的一片文章《如何調(diào)試MFC中的內(nèi)存泄漏》,講道用設(shè)置{,,msvcrtd.dll}_crtBreakAlloc這個(gè)變量來調(diào)試內(nèi)存泄露的問題。
在How to use _crtBreakAlloc to debug a memory allocation你可以找到英文的更完整的版本,靜態(tài)鏈接和動(dòng)態(tài)連接到C運(yùn)行庫的名稱是不一樣的
靜態(tài):_crtBreakAlloc
動(dòng)態(tài):{,,msvcr40d.dll}*__p__crtBreakAlloc()
{,,msvcrtd.dll}__p__crtBreakAlloc()是個(gè)什么東西呢?
查看msdn索引“Advanced Breakpoint”and you will find out...
語法如下:
{[function],[source],[exe] } location
{[function],[source],[exe] } variable_name
{[function],[source],[exe] } expression_r_r
這個(gè)是我轉(zhuǎn)的時(shí)候的地址:http://blog.sina.com.cn/s/blog_630d564a0100gq5k.html
posted on 2012-07-27 19:20 陳志遠(yuǎn) 閱讀(472) 評(píng)論(0) 編輯 收藏 引用

