内存泄露问题,谁有比较实用的检测方法,或建议
内存泄露问题,谁有比较实用的检测方法,或建议
如何定位?如何检测?如何避免?
今天试了
CRTDBG_LEAK_CHECK_DF
没什么结果
[解决办法]
使用智能指针
[解决办法]
有内存泄露的检测工具的,网上搜下
[解决办法]
我首先想到的就是检测内存泄露的插件 能力有限方法想不出
[解决办法]
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);函数检查内存泄露问题
[解决办法]
自己写个内存管理器吧
[解决办法]
自己封装allocator。
[解决办法]
最简单的方法,定义一个全局变量,每个New的地方++,每个Delete的地方--,那样你就知道到底哪里出问题了
[解决办法]
内存泄露是c++比较麻烦的一个问题!推荐一个vc下的工具 Visual Leak Detector from http://blog.csdn.net/seawen/article/details/3714128
还有一篇博客 http://blog.csdn.net/zxcred/article/details/3228239
楼主学习学习吧!
[解决办法]
建议:不用
[解决办法]
不使用动态内存就不用检测了。(^_^)
//使用动态分配#include <stdio.h>#include <stdlib.h>#include <malloc.h>int i,L;char *p;void main() { for (i=0;i<20000;i++) { L=rand(); p=malloc(L); if (NULL==p) { printf("malloc error!\n"); continue; } memset(p,0,L); free(p); }}//不使用动态分配#include <stdio.h>#include <stdlib.h>#include <memory.h>#define MAXLEN 30000int i,L;char buf[MAXLEN];char *p;void main() { p=&buf[0]; for (i=0;i<20000;i++) { L=rand(); if (L>MAXLEN) { printf("L>MAXLEN==%d, ignore spilth.\n",MAXLEN); L=MAXLEN; } memset(p,0,L); }}
[解决办法]
auto_ptr应该可以吧