如何在类中释放set <int>的内存?

时间:2016-07-21 13:14:09

标签: c++ memory set

假设我有一个结构:

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不会释放记忆。

1 个答案:

答案 0 :(得分:2)

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

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