如何在课堂上释放一组内存<int>?

How to release the memory a set<int> in class?

本文关键字:内存 一组 lt int gt 课堂 释放      更新时间:2023-10-16

假设我有一个结构:

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

foonodes中插入一些元素后,我想释放nodes所拥有的内存,我从std::vector memory在清除后是否释放得到了一些启发?

Can

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

是否正确释放内存?

我的问题如何从集合中释放内存不同。由于int是内置类型,我们不能将其作为指针删除,这在如何从集合中释放内存时需要考虑。

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

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

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