当前位置: 技术问答>linux和unix
在unix有没有检查有无内存未释放的工具
来源: 互联网 发布时间:2015-01-24
本文导语: 如题,非常急。请各位大哥不吝赐教。 | 其实很简单,如果你怀疑哪段代码有内存泄漏,则在这段代码的前后添加如下函数调用, MemCheck(1); ...(怀疑有内存泄漏的代码) int iRet = MemCheck(0); MemC...
如题,非常急。请各位大哥不吝赐教。
|
其实很简单,如果你怀疑哪段代码有内存泄漏,则在这段代码的前后添加如下函数调用,
MemCheck(1);
...(怀疑有内存泄漏的代码)
int iRet = MemCheck(0);
MemCheck()返回的就是泄漏的字节数。
附:
int MemCheck(int begin=1)
{
static char *saved=NULL;
char *p = new char[4];
if (begin) {
saved = p;
delete p;
} else
if (p != saved) {
return (p - saved);
}
return 0;
}
MemCheck(1);
...(怀疑有内存泄漏的代码)
int iRet = MemCheck(0);
MemCheck()返回的就是泄漏的字节数。
附:
int MemCheck(int begin=1)
{
static char *saved=NULL;
char *p = new char[4];
if (begin) {
saved = p;
delete p;
} else
if (p != saved) {
return (p - saved);
}
return 0;
}
|
我猜测你的意思是:如果一个application申请了内存(从堆中),没有释放就退出了,这样会不会导致内存泄漏。
我认为是不会的。
但是,如果是申请的某些资源(如:shared memory, semophore, 等)如果不主动释放,它就留在那儿了。
我认为是不会的。
但是,如果是申请的某些资源(如:shared memory, semophore, 等)如果不主动释放,它就留在那儿了。
|
using workshop on solaris
|
Rational purify比较好用,但很贵
还有Insure C++也要银子。
用dmalloc吧。
SUN Workshop 6U2代的哪个libgc不好用,我试过。
还有Insure C++也要银子。
用dmalloc吧。
SUN Workshop 6U2代的哪个libgc不好用,我试过。
|
我在AIX上用的是svmon
|
用工具 top 查看运行前后的内存状况