您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 关于vector容器,关于内存泄漏,关于new delete求解答

关于vector容器,关于内存泄漏,关于new delete求解答

来源:网络整理     时间:2016/8/29 7:00:56     关键词:

关于网友提出的“ 关于vector容器,关于内存泄漏,关于new delete求解答”问题疑问,本网通过在网上对“ 关于vector容器,关于内存泄漏,关于new delete求解答”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 关于vector容器,关于内存泄漏,关于new delete求解答
描述:

vector内存泄漏STL

关于vector的释放,比较公认的应该是swap方法了吧。最近一直在纠结二维vector使用中的释放问题,刚好就查到了检测内存泄漏的_CrtDumpMemoryLeaks()。在尝试使用期间就发现了以下问题,求解答。
很简单的一段代码哈。
#define _CRTDBG_MAP_ALLOC 
#include  
using namespace std;
int main()

vector array(100,0);
vector().swap(array);
_CrtDumpMemoryLeaks(); 
return 0; 

这段代码调试的时候,居然检测到了内存泄漏。。。
但把中间用到vector的那两句换成new一段空间再delete掉,然后就没有问题了。
很奇怪啊。。。明明vector已经swap掉了,为什么还是有内存泄漏呢?搞的我森森的纠结是不是要把以前用过的vector的地方全部改成new delete...
解决方案1:

引用 4 楼 sanss2012 的回复:
Quote: 引用 2 楼 mougaidong 的回复:

int main()

{
vector array(100,0);
vector().swap(array);
}
_CrtDumpMemoryLeaks(); 
return 0; 

果然好了。。。不过能不能解释下这是为什么呢??谢谢啦~

你最开始写的那个没有超出生命期,就算swap,但是还是没有释放你换完的那个, 这种方法 加了一个{ } 控制生命期 当到_CrtDumpMemoryLeaks(); 时已经释放干净啦 解决方案2:

int main()

{
vector array(100,0);
vector().swap(array);
}
_CrtDumpMemoryLeaks(); 
return 0; 


以上介绍了“ 关于vector容器,关于内存泄漏,关于new delete求解答”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3653779.html

相关图片

相关文章