gpt4 book ai didi

c++ - 类对象的自毁

转载 作者:行者123 更新时间:2023-11-27 23:54:37 25 4
gpt4 key购买 nike

我很难释放以这种方式分配的内存

Text * text = new Text();

我有迭代器

 for(iterator = textList.begin() ; iterator != textList.end() ; ++iterator)
{
if((*iterator)->getTitle() == element.toStdString())
{
textList.remove((*iterator));
break;
}
}

textList 包含指向类对象的指针

    list<Text *>textList;

和析构函数

~Text() {delete this;}

我读过 remove() 方法实际上调用了对象的析构函数,但出于某种原因,情况并非如此。 Valgrind 清楚地显示内存泄漏。所以,如果你能给我一个关于如何释放内存的提​​示,我将不胜感激。

最佳答案

这看起来很可疑:

~Text() {delete this;}

当 this 已经被删除时,为什么要调用 delete this?您存储指向文本的指针列表。如果您自己创建 Text 的实例,那么您还需要删除它们(或使用一些智能指针来帮助您这样做),或者,您也可以存储 Text 对象的列表:

list<Text> textList;
m_textList.push_back(Text("Some text"));

for (iterator = textList.begin() ; iterator != textList.end() ; ++iterator)
{
if (iterator->getTitle() == element.toStdString())
{
textList.remove(iterator);
break;
}
}

关于c++ - 类对象的自毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43483738/

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