c++ - 如何释放类中 set<int> 的内存?

标签 c++ memory set

假设我有一个结构:

struct Foo {
  std::set<int> nodes;
};
Foo foo;

foonodes中插入一些元素后,我想释放nodes占用的内存,从Is std::vector memory freed upon a clear?得到一些启发

可以

 std::set<int>().swap(foo.nodes)

正确释放内存?

我的问题不同于 how to free memory from a set 。由于 int 是内置类型,我们不能将其作为指针删除,这在 how to free memory from a set 中被考虑。

顺便说一句,clear() 不会释放内存。

最佳答案

foo.nodes.clear();将清除 set .但请注意,C++ 运行时可能不会立即将内存释放回操作系统,因此对内存消耗的影响可能难以衡量。

std::set<int>().swap(foo.nodes);将获得类似的结果,但它确实会受到创建匿名临时文件的开销的影响。

关于c++ - 如何释放类中 set<int> 的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38505291/

相关文章:

c++ - 子类怎么调用父类初始化成员变量的构造函数不同呢? [C++]

c++ - 共享库无法访问程序的内存

java - 如何在 Java 中创建内存泄漏?

c++ - 为什么不能将 C++ 设置迭代器强制转换为 boolean 值?

mysql - 向大表添加列 : datatype or INT or reference table?

c++ - 如何从C中的数据中删除Ì

c++ - 如何查找依赖库

C++ 在我使用 getline 从文件中读取后,我无法再写入 txt 文件

c++ - 免费(): double free detected in tcache 2

python - 如何在 Python 中最好地命名集合?