假设我有一个结构:
struct Foo {
std::set<int> nodes;
};
Foo foo;
将一些元素插入nodes
的{{1}}之后,我想释放foo
所拥有的内存,并从Is std::vector memory freed upon a clear?
能
nodes
正确释放内存?
我的问题与 how to free memory from a set不同。由于 std::set<int>().swap(foo.nodes)
是内置类型,因此我们无法将其删除为指针,how to free memory from a set中会将其视为指针。
顺便说一下,int
不会释放记忆。
答案 0 :(得分:2)
foo.nodes.clear();
将清除set
。但请注意,C ++运行时可能不会立即将内存释放回操作系统,因此可能难以测量对内存消耗的影响。
std::set<int>().swap(foo.nodes);
将获得类似的结果,但它确实会受到匿名临时创建的开销的影响。