gpt4 book ai didi

c++ - 从列表中返回指向对象的指针

转载 作者:搜寻专家 更新时间:2023-10-31 01:16:49 24 4
gpt4 key购买 nike

我在类 FutureEvent 中有一个对象列表,我希望能够在其中执行类似 futureEvents.getNextEvent() 的操作。这是我目前所拥有的,但由于 New 调用,我认为这是我主要内存泄漏的原因。任何帮助将不胜感激。我还能如何将指针返回到下一个事件。谢谢

EVENT* FutureEvent::getNextEvent()
{
EVENT* nextEvent = new EVENT;
*nextEvent = futureEvents.front();
futureEvents.pop_front();
return nextEvent;
}

最佳答案

如果您在任何地方都没有删除这个函数的结果,这肯定是内存泄漏的原因。

可能的解决方案包括:

  1. 按值(value)返回

    使用这种方法,您甚至不需要使用动态分配(即 new)。您只使用自动对象,因此不需要清理:它们使用的内存会自动释放,并且会自动调用任何析构函数。

    EVENT FutureEvent::getNextEvent() {
    EVENT nextEvent = futureEvents.front();
    futureEvents.pop_front();
    return nextEvent;
    }
  2. 使用智能指针

    这种方法仍然使用动态分配,但它委托(delegate)给一个可以自动进行清理的类。

    std::unique_ptr<EVENT> FutureEvent::getNextEvent() {
    std::unique_ptr<EVENT> nextEvent(new EVENT(futureEvents.front()));
    futureEvents.pop_front();
    return nextEvent;
    }

    如果您的编译器不支持 std::unique_ptr,您可以使用 Boost 中的智能指针之一,例如 boost::shared_ptr

关于c++ - 从列表中返回指向对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8750823/

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