vector<T>内存释放,注意此篇文章对于T不是手动分配内存的指针而言。(要是内存必须手动释放或智能指针)
两种方法:
1.手动释放
vector<string> v;
for(int i = 0; i < 100000; i++)
{
v.push_back("abcdefghijklmh");
}
后v已经占用了大量的内存使用swap手动释放
v.swap(vector<string>()); //因为是临时局部变量,执行完毕后自动释放从而完成对v的内存释放。
2.自动释放
vector<T>变量离开有效作用域系统自动执行析构函数释放内存。
经过上面的分析得出,设计你自己的系统使用局部变量还是使用类成员变量甚至全部变量值得斟酌。
另外手动释放内存要是类成员变量在下面情况下反而显得多余而浪费性能。(内存泄露是最大的杀手)
class A
{
vector<double> v;
}
v重复读大量的数据,此时不应该释放。
因为你释放了,当重新读的时候。他会增大内存来满足新的数据要求。次数可能不定,这样是不是多余呢?
仁者见仁智者见智!!!