首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

Vector 先clear后又push_back会不会内存泄露

2013-11-04 
Vector 先clear后再push_back会不会内存泄露?Vector v1中原本有数据,先用clear之后,重新push_back,由于cle

Vector 先clear后再push_back会不会内存泄露?
Vector v1中原本有数据,先用clear之后,重新push_back,由于clear只是重置了size并没有真正的释放内存,如果接着push_back会不会造成内存泄露?
[解决办法]
如果你指的是标准库中的vector的话,不会。clear不会释放内容,push_back会直接使用之前的内存,vector析构的时候会自动释放这些内存。
如果clear剩余的内存太大而不可忍受,可是使用swap交换一下:
std::vector<int> v1;
...
for (int i = 0; i < 1000000; i++) v1.push_back(i);
...
v1.clear();
std::vector<int>().swap(v1);
[解决办法]
不会!
而且和内存泄露没有半毛钱关系!
只要你自己没有手动new或者malloc内存空间的话,就一定不存在内存泄露的问题!
[解决办法]
如果你放的是new的指针,不手动释放肯定会泄露,其余的肯定不会,他clear的时候会帮你清理

热点排行