gpt4 book ai didi

c++ - 释放内存以设置在 C++ 中

转载 作者:行者123 更新时间:2023-11-28 02:43:51 27 4
gpt4 key购买 nike

我想从我的集合中释放内存。我试过 how to free memory from a set发布,但它对我不起作用。

这是我的代码:

#include <iostream>
#include <set>
using namespace std;

struct Deleter
{
void operator () (int *ptr)
{
delete ptr;
}
};

int main()
{
set<int> myset;
myset.insert(100);
myset.insert(1);
myset.insert(12);
myset.insert(988);
set<int>::iterator it;
for (it = myset.begin() ; it!=myset.end() ; it++)
{
Deleter(it);
cout<<"size of set: "<<myset.size()<<endl;
}

return 0;
}

输出是:

size of set: 4
size of set: 4
size of set: 4
size of set: 4

尽管 set 的大小仍然是 4,这段代码如何释放内存?它通过 Deleter(it) 删除了什么?如果我在最后使用 myset.clear(),它会释放 set 中的所有内存吗?

谢谢。

最佳答案

在 C++ 中,您使用 delete 来释放在新建对象时分配的内存。当您新建一个对象时,您就是在说您将为它管理内存。

在这种情况下,您并没有更新任何东西,您只是将一个元素插入到集合中。要从集合中删除项目,请使用 erase 方法。

它有几种不同的重载方式,因此根据您是想通过 iter 还是 value 删除它,您将传递不同的参数。 Here是设置删除的一个很好的引用。

    myset.erase(100);
myset.erase(100);
myset.erase(12);
myset.erase(988);

此外,如果您想删除集合中的所有内容,只需调用 clear() 方法即可。

myset.clear();

关于c++ - 释放内存以设置在 C++ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25061879/

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