gpt4 book ai didi

c++ - 删除 vector 管理的资源

转载 作者:太空宇宙 更新时间:2023-11-04 15:46:31 25 4
gpt4 key购买 nike

我想要一个 vector 来保存指向它将拥有的一些对象的指针。

这是 vector :

private:
std::vector<fppVirtual*> m_fapps;

我创建了这样的元素:

    m_fapps.push_back(new fpp1(renderingEngine)); //fpp* are subclasses of fppVirtual
m_fapps.push_back(new fpp2(renderingEngine));
m_fapps.push_back(new fpp3(renderingEngine));

作为m_fapps是另一个类中的 vector 实例变量,我想确保该类的析构函数正确清理 m_fapps :

       for (int i=0, size=m_fapps.size();i<size;++i){
delete m_fapps[i];
}

这是可接受的内存管理技术吗?我假设需要这个循环,因为当 vector 在其所属类被破坏时超出范围时,只有指向这些 new 的指针。对象将被删除,对吗?

最佳答案

这有效(有一些注意事项)但不被认为是惯用的 C++,这是有充分理由的。

您应该强烈考虑改用智能指针 vector (或像 boost::ptr_vector 这样的智能 vector ),以避免必须进行手动内存管理。

这也会免费为您提供异常安全性,并且还会避免在您的外部类可复制时发生的令人讨厌的所有权问题。

关于c++ - 删除 vector 管理的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15827444/

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