2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > C++内存泄露如何检测?

C++内存泄露如何检测?

时间:2021-01-19 09:36:00

相关推荐

C++内存泄露如何检测?

1.检查是否存在内存泄露

2.检查哪里出现内存泄露

检查内存泄露不能仅仅靠工具,需要了解代码的框架。即使检查出结果显示出现内存泄露,那也有可能是正常的,具体看你的意图了,如果代码是自己写得那应该不成问题。

如把 new xxx 压入list中。 list在其他地方remove然后delete。

所以解决内存泄露最主要的方法不是在工具,或者几行调试代码,而在于你对程序逻辑的理解。

如果单纯new出来的东西,用一个局部的指针指向。但在函数结尾没有重定向,或者delete,那必定出现内存泄露。

下面提供检查并调试内存泄露的简单方法。

思路很简单:检查内存出现泄露——》二分法定位内存泄露区域——》分析解决问题。

为了得知一段代码中是否有内存泄漏,你可以在这段代码的开始和完成处分别拍一个快照,然后调用_crtmemdifference函数来比较两个状态:

_crtmemcheckpoint( &s1 );

// memory allocations take place here

_crtmemcheckpoint( &s2 );

if ( _crtmemdifference( &s3, &s1, &s2) )

_crtmemdumpstatistics( &s3 );

就像名字中暗示的那样,_crtmemdifference比较两个内存状态,并且产生一个结果(第一个参数)。把 _crtmemcheckpoint 放在程序的开始和结尾,调用_crtmemdifference 来比较结果,这也是一种检测内存泄漏的方法。如果发现内存泄漏,你可以使用_crtmemcheckpoint把程序分成两半分别使用上述方法来检测内存泄漏,这样就是使用二分法来检查内存泄漏。

详细见:/smiton/article/details/6400349 这里写得很好了。

其他:/ailuoli/blog/item/009defd91852b8f339012fcb.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。