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

vector内存释放的有关问题

2012-01-29 
vector内存释放的问题使用vector存放struct以后,内存占用无法释放。用v.clearv.swap等方法都不见效,至多释

vector内存释放的问题
使用vector存放struct以后,内存占用无法释放。
用v.clear   v.swap等方法都不见效,至多释放一部分。
而这个程序是长期运行,而vector将在整个过程中使用,因而必须全部释放才行。

struct里用到了CString类型变量,是不是这个原因。
请赐教,谢谢!

[解决办法]
这个应该是vector在不断增长,而删除元素又没有清除vector中的空间导致的。可以用下面的技巧:
std::vector <int> my_vector; // 假设这个是你所使用的my_vector

std::vector <int> temp(my_vector); // 这是一个临时的vector,把my_vector的所有内容都copy到temp中,但是temp的capacity会比my_vector的小很多,假设my_vector因为长时间运行已经增长的很大,而有用的数据其实不多
my_vector.swap(temp); // 交换之后,my_vector就缩小了

如果你需要完全释放,可以和一个空的vector swap即可。或者更加干脆的,用动态内存分配vector,然后delete这个vector就可以了

热点排行