用什么工具可以检测是否有内存泄露? 我用boundschecker(可检vc/cb/delphi等等内存/api/资源的bug),挺好. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有boundschecker的中文说明或教程吗?好像很复杂。[email protected]谢谢! boundschecker用法很简单的!www.vckbase.com是好象有吧 VC++6。0里有一个工具,叫PROCESS VIEW,可以看见进程和线程,其中一个项目,可以检测内存泄漏 补充:在开始菜单的Visual Studio 6.0的子项目里 你太幸运了,我刚刚测试过我的程序是否有内存泄漏,方法如下:CMemoryState a1;a1.Checkpoint();Yourfunctionname();CMemoruState a2,a3;a2.Checkpoint();if(a3.Difference(a1,a2)) MessageBox("内存泄漏!");else MessageBox("OK!");这样可以测试你的函数是否有内存泄漏。 首先感谢您使用微软产品。 对于如何检测内存泄漏的问题,我想从两方面给出一些参考,一,如何在程序开发过程中在源代码层次上检测程序中的内存泄漏。二,如何用工具检测应用程序的内存泄漏问题。 对于第一个问题,应用程序的内存泄漏的检测可以通过Windows 2000自带的Performance Monitor进行。Performance Monitor可以用来监测系统中处理器、内存、磁盘以及网络资源的使用情况。Performance Monitor的启动可以在命令行键入perfmon,也可以从Administration Tools中的快捷方式启动。关于Performance Monitor的使用的更详细的Windows 2000 Professional Resource Kit的第28章"Evaluating Memory and Cache Usage"中的” Investigating Memory Problems”部分。该文档可以在MSDN的Resource Kit目录下找到,也可以通过WWW在线访问微软的技术站点,URL是http://www.microsoft.com/windows2000/techinfo/reskit/en-us/default.asp?url=/windows2000/techinfo/reskit/en-us/prork/prec_evl_xzgm.asp。 对于第二个问题,即在源代码级别检测程序中的内存泄漏,在VC++ 6.0中可以通过Debug模式和CRT库来方便的检测程序中的内存泄漏,具体可以参见在线文档,文档的URL是:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvc60/html/memleaks.asp。以下是一个例子。假设有如下VC++程序: //start#include "stdafx.h"void leakMemory(){ char* pChar=new char[5];}int main(int argc, char* argv[]){ leakMemory(); return 0;}//end该程序的leakMemory存在内存泄漏。分配给pChar指针的char[5]没有被释放。在该程序中如过需要检测leakMemory()函数的内存泄漏,可以在程序中插入一些语句使之成为以下程序://start#define _CRTDBG_MAP_ALLOC#include "stdafx.h"#include <stdlib.h>#include <crtdbg.h>void leakMemory(){ char* pChar=new char[5];}int main(int argc, char* argv[]){ leakMemory(); _CrtDumpMemoryLeaks(); return 0;}//end此时,在VC++ 6.0中按F5开始Debug,在下部调试信息框的"Debug"标签页中将显示如下与内存泄漏有关的内容:Detected memory leaks!Dumping objects ->{44} normal block at 0x00431BB0, 5 bytes long. Data: < > CD CD CD CD CD Object dump complete.The thread 0xCA8 has exited with code 0 (0x0).通过这些信息,程序员可以有效的对内存泄漏进行检测。CRT库还有复杂的使用方法和更强大的功能。具体文档可以查看MSDN,或者阅读在线帮助文档。希望我的回答能够令您满意。- 微软全球技术中心 VC技术支持本贴子仅供CSDN的用户作为参考信息使用。其内容不具备任何法律保障。您需要考虑到并承担使用此信息可能带来的风险。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。 程序员大本营微软版DISK 2上有工具 为什么子窗口的OnPaint无效 在读取进程内存过程出错,希望得到帮助! web页面保存如何不弹出对话框,求救,在线等待,谢谢 发觉JCreators比F L G还毒,发垃圾邮件。难怪班竹会删他。支持删。。。删。。。删。。。 VC白痴求代码 一个简单的问题。 难道csdn里真的没有高手嘛?我想要一个填充有孔多边形的源代码。 请问AutoCAD R14中如何在加载ARX程序的同时也载入自定义菜单? 类中CHMRCDApp *myApp;声明怎么会出错?应该包含什么头文件吗? 有人知道,可以启动另外一个进程的线程。 帮我点一下我就给分! <Vc++6宝典>怎么样
好像很复杂。
[email protected]
谢谢!
www.vckbase.com是好象有吧
CMemoryState a1;
a1.Checkpoint();
Yourfunctionname();
CMemoruState a2,a3;
a2.Checkpoint();
if(a3.Difference(a1,a2))
MessageBox("内存泄漏!");
else
MessageBox("OK!");
这样可以测试你的函数是否有内存泄漏。
对于如何检测内存泄漏的问题,我想从两方面给出一些参考,一,如何在程序开发过程中在源代码层次上检测程序中的内存泄漏。
二,如何用工具检测应用程序的内存泄漏问题。
对于第一个问题,应用程序的内存泄漏的检测可以通过Windows 2000自带的Performance Monitor进行。Performance Monitor可以用来监测系统中处理器、内存、磁盘以及网络资源的使用情况。Performance Monitor的启动可以在命令行键入perfmon,也可以从Administration Tools中的快捷方式启动。关于Performance Monitor的使用的更详细的Windows 2000 Professional Resource Kit的第28章"Evaluating Memory and Cache Usage"中的” Investigating Memory Problems”部分。该文档可以在MSDN的Resource Kit目录下找到,也可以通过WWW在线访问微软的技术站点,URL是http://www.microsoft.com/windows2000/techinfo/reskit/en-us/default.asp?url=/windows2000/techinfo/reskit/en-us/prork/prec_evl_xzgm.asp。
对于第二个问题,即在源代码级别检测程序中的内存泄漏,在VC++ 6.0中可以通过Debug模式和CRT库来方便的检测程序中的内存泄漏,具体可以参见在线文档,文档的URL是:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvc60/html/memleaks.asp。以下是一个例子。假设有如下VC++程序:
//start
#include "stdafx.h"void leakMemory(){
char* pChar=new char[5];
}int main(int argc, char* argv[])
{
leakMemory();
return 0;
}
//end该程序的leakMemory存在内存泄漏。分配给pChar指针的char[5]没有被释放。在该程序中如过需要检测leakMemory()函数的内存泄漏,可以在程序中插入一些语句使之成为以下程序://start
#define _CRTDBG_MAP_ALLOC
#include "stdafx.h"
#include <stdlib.h>
#include <crtdbg.h>void leakMemory(){
char* pChar=new char[5];
}int main(int argc, char* argv[])
{
leakMemory();
_CrtDumpMemoryLeaks();
return 0;
}
//end此时,在VC++ 6.0中按F5开始Debug,在下部调试信息框的"Debug"标签页中将显示如下与内存泄漏有关的内容:
Detected memory leaks!
Dumping objects ->
{44} normal block at 0x00431BB0, 5 bytes long.
Data: < > CD CD CD CD CD
Object dump complete.
The thread 0xCA8 has exited with code 0 (0x0).通过这些信息,程序员可以有效的对内存泄漏进行检测。CRT库还有复杂的使用方法和更强大的功能。具体文档可以查看MSDN,或者阅读在线帮助文档。
希望我的回答能够令您满意。
- 微软全球技术中心 VC技术支持本贴子仅供CSDN的用户作为参考信息使用。其内容不具备任何法律保障。您需要考虑到并承担使用此信息可能带来的风险。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。