c++ - 如何为向量向量释放内存(C++)
问题描述
我有一个vector<vector<double>> elem
并且我想在我的程序中多次释放它的内存。
我尝试使用
vector<vector<double>>().swap(elem);
甚至是 for cicle
for(int i=0; i<elem.size();i++)
vector<double>().swap(elem[i]);
vector<vector<double>>().swap(elem);
elem.resize(dim, vector<double>(0));
(我希望第一个维度是某个数字dim
)
但是当我打电话
cout<<elem[0].size();
在我的程序中,即使我刚刚使用了上述方法,输出也不断增长。向量的“主要”大小不存在此问题。
IE
cout<<elem.size();
总是输出dim
编辑:我知道 clear() 但我想释放向量,shrink_to_fit() 也不起作用。这也是在主要功能之外的功能中实现的,如下所示:
void arrayReset(vector<vector<double>> elem) {
for(int i=0; i<elem.size();i++)
vector<double>().swap(elem[i]);
vector<vector<double>>().swap(elem);
elem.resize(dim, vector<double>(0));
}
解决方案
如何为矢量释放内存
无论元素类型如何,所有向量的方式都是相同的。
第 1 步:删除向量的元素。最简单的方法是clear
成员函数。在这一步之后,size
成员函数将返回 0。
步骤 2:调用shrink_to_fit
请求释放内存的成员函数。在这一步之后,capacity
可能会返回 0。
从技术上讲,shrink_to_fit
是语言实现不需要遵守的请求。释放内存的唯一保证方法是销毁向量。例子:
{
std::vector<std::vector<double> vector;
// use vector here
}
// memory has been deallocated
我想在我的程序中多次释放它的内存。
请注意,这通常比不多次释放要慢。我建议确保你想要一些真正有用的东西。
推荐阅读
- python - max 函数是否仅限于使用长度为 9 的列表?
- sql - 按日期将表转换为新的 From-To 表
- java - 使用 URLConnection 读取文件失败
- json - 无法使用 Azure 逻辑应用访问 XML 中的某些项目
- ruby-on-rails - 使用带有 Rails 和 Postgres 的数据库视图计算移动平均值
- r - R中具有未指定FUN的多重聚合
- python-3.x - Pandas:在列上应用函数列表,每列一个函数
- sql - 什么是正确的 SQL 语法?
- python - Django 向不同用户显示自定义 URL
- spring - Neo4j Spring OGM 查询实体列表总是返回不同的