我有一个看起来像的数据结构
template < class T1, class T2 > struct sometype
{
std::vector < T1 > v1;
std::vector < T2 > v2;
T1 deriv[10];
};
我创建了一个数据结构向量
std::vector <sometype <T1, T2>> somevec;
我的疑问是我是否这样做
somevec.erase(somevec.begin(), somevec.end());
std::vector <sometype <T1, T2>>().swap (somevec);
我可以回收记忆吗?
最佳答案
您可以做得更好:
somevec.erase(somevec.begin(), somevec.end());
std::vector <sometype <T1, T2>>().swap (somevec);
您需要做的只是:
std::vector <sometype<T1, T2>>().swap(somevec);
这是因为您创建了一个空的临时文件。然后将空内容与实际数据
somevec
交换。然后,该临时文件将被销毁并回收使用变量分配的内存(因为该内存已交换到该临时文件中)。这就是所谓的“缩小成语”
关于c++ - 数据结构 vector 的内存管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15564126/