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就可以了