gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:03:21 40 4
gpt4 key购买 nike

假设我有一个结构:

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/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com