数据结构向量的内存管理

Memory management of a vector of data-structures

本文关键字:管理 内存 向量 数据结构      更新时间:2023-10-16

我有一个数据结构,看起来像

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的实际数据交换。然后销毁临时变量并回收分配给变量的内存(因为内存被交换到临时变量中)。

这被称为"收缩到合适的位置"