VC下调试内存泄漏的办法

VC的控制台程序不会跟踪内存泄漏,如果需要调试控制台程序的内存情况,需要_CrtSetDbgFlag

详细原理我也不太懂,我也是从网上摘过来的,直接帖代码


// 内存泄漏跟踪
#ifdef WIN32
#include <SDKDDKVer.h>
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#define VC_MemLeakCheck() _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF)
#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)
//_CrtSetBreakAlloc(107); 跟踪内存泄漏块
#else
#define VC_MemLeakCheck()
#endif // _DEBUG
#else
#define VC_MemLeakCheck()
#endif // WIN32

在程序main入口处加入 VC_MemLeakCheck() 定义就可以了


int _tmain(int argc, _TCHAR* argv[])
{
VC_MemLeakCheck();
char * pnew = new char[1024];
char * pmalloc = (char*)malloc(1024);
return 0;
}

程序退出的时候会自动输出内存泄漏的情况


Detected memory leaks!
Dumping objects ->
e:\trytry\jpeg\jpegtest\jpegtest.cpp(15) : {108} normal block at 0x001137F8, 1024 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
e:\trytry\jpeg\jpegtest\jpegtest.cpp(14) : {107} normal block at 0x001133B8, 1024 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.
程序“[5452] jpegtest.exe: 本机”已退出,返回值为 0 (0x0)。

VC下调试内存泄漏的办法,布布扣,bubuko.com

时间: 2024-10-14 05:50:56

VC下调试内存泄漏的办法的相关文章

Windows平台下的内存泄漏检测

一,Windows平台下的内存泄漏检测 检测是否存在内存泄漏问题 Windows平台下面Visual Studio 调试器和 C 运行时 (CRT) 库为我们提供了检测和识别内存泄漏的有效方法,原理大致如下:内存分配要通过CRT在运行时实现,只要在分配内存和释放内存时分别做好记录,程序结束时对比分配内存和释放内存的记录就可以确定是不是有内存泄漏.在vs中启用内存检测的方法如下: •STEP1,在程序中包括以下语句: (#include 语句必须采用上文所示顺序. 如果更改了顺序,所使用的函数可能

如何在linux下检测内存泄漏(转)

本文转自:http://www.ibm.com/developerworks/cn/linux/l-mleak/ 本文针对 linux 下的 C++ 程序的内存泄漏的检测方法及其实现进行探讨.其中包括 C++ 中的 new 和 delete 的基本原理,内存检测子系统的实现原理和具体方法,以及内存泄漏检测的高级话题.作为内存检测子系统实现的一部分,提供了一个具有更好的使用特性的互斥体(Mutex)类. 1.开发背景 在 windows 下使用 VC 编程时,我们通常需要 DEBUG 模式下运行程

Instrument调试内存泄漏-leaks

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc 欢迎关注我的iOS SDK详解专栏 blog.csdn.net/column/manage.html?alias=huangwenchen-ios-sdk 前言:计划是7月份更新Instrument以及调试相关的博客,不过今天刚好遇到个内存泄漏的问题.五月份的数据持久化部分还有三篇左右没更新,六月份集中在多线程开发上.所以这里就简单写一下Instrument中leaks使用吧. 如何打开Leaks XCode - Op

Windows 下的内存泄漏检测方法

在 Windows 下,可使用 Visual C++ 的 C Runtime Library(CRT) 检测内存泄漏. 首先,我们在.c或.cpp 文件首行插入这一段代码: #define _CRTDBG_MAP_ALLOC #include <crtdbg.h> main() 中插入如下的代码: int main() { //开始的地方插入该语句 _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); //_CrtSetBr

Webview内存泄漏解决办法2

在这次开发过程中,需要用到webview展示一些界面,但是加载的页面如果有很多图片就会发现内存占用暴涨,并且在退出该界面后,即使在包含该webview的Activity的destroy()方法中,使用webview.destroy();webview=null;对内存占回收用还是没有任何效果.有人说,一旦在你的xml布局中引用了webview甚至没有使用过,都会阻碍重新进入Application之后对内存的gc.包括使用MapView有时一会引发OOM,几经周折在网上看到各种解决办法,在这里跟大

『神坑』DotNetty 内存泄漏 解决办法

背景 近来在用 DotNetty 实现一个文件上传下载的同步服务. 其中:客户端下载服务端的文件,客户端多次请求,从服务端将文件分片下载下来,追加到本地磁盘. —— 非常简单的代码,都写了几十次了,驾轻就熟. 问题来了 可是:在进行压力测试时,我这边下载一个 Win10 的 ISO 镜像,4个G. 我发现:客户端内存不停增长,直到内存溢出 —— 我擦. VS2015内存诊断 内存诊断,我们发现 有很多 16M(16777228字节) 的 byte[] 占据着内存. 而我请求服务端的 文件分片 只

在VC中检测内存泄漏

声明:checkleaks.h和checkleaks.cpp这两个文件中的代码是在网上COPY的,但原来那个网站现在却找不到了 所以,这篇文章不算完全原创,呵呵. 就当作是一个存档吧 先上代码: [cpp] view plaincopyprint? //checkleaks.h #ifndef SET_DEBUG_NEW_H #define SET_DEBUG_NEW_H #ifdef _DEBUG #define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, 

VC++中查找内存泄漏最简单的方法

1.在整个程序的代码开头(比如stdafx.h文件最前边)加上: #define  CRTDBG_MAP_ALLOC   #include  <stdlib.h> #include  <crtdbg.h> 2.在出口(比如~CApp())加上: _CrtDumpMemoryLeaks(); 注意:若添加的位置不正确,得到的结果可能没有意义.

一个跨平台的 C++ 内存泄漏检测器

2004 年 3 月 01 日 内存泄漏对于C/C++程序员来说也可以算作是个永恒的话题了吧.在Windows下,MFC的一个很有用的功能就是能在程序运行结束时报告是否发生了内存泄漏.在Linux下,相对来说就没有那么容易使用的解决方案了:像mpatrol之类的现有工具,易用性.附加开销和性能都不是很理想.本文实现一个极易于使用.跨平台的C++内存泄漏检测器.并对相关的技术问题作一下探讨. 基本使用 对于下面这样的一个简单程序test.cpp: int main() { int* p1 = ne