- 论坛徽章:
- 0
|
做了个vector 内存释放的实验。
第一种情况, 定义一个vector: vector< string > testStrv; 然后做10000000次push back 一个字符串 “aaaaaaaaaaa”的操作,然后用swap: vector<string>().swap(testStrv) 可以释放掉内存, 没有问题。
第二种情况, 定义一个结构体和装载这个结构体的vector:
struct testStruswap {
string tStr;
int tInt;
};
vector< testStruswap > mytestStruswapv;
然后做10000000次push back :
testStruswap obTestStruswap;
obTestStruswap.tStr = "aaaaaaaaaa";
obTestStruswap.tInt = 2;
mytestStruswapv.push_back( obTestStruswap );
然后用swap释放内存:
vector< testStruswap >().swap(mytestStruswapv);
最后发现只能释放掉很少的一部分内存 (5%), 不知道问题到底在哪里?
各位有没有遇到类似这样的问题, 多谢!
|
|