假设我有一个结构:
struct Foo {
std::set<int> nodes;
};
Foo foo;
在foo
的nodes
中插入一些元素后,我想释放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/