C++ 删除由向量管理的资源

C++ 删除由向量管理的资源,c++,C++,我想要一个向量来保存指向它将拥有的某些对象的指针 这是向量: private: std::向量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))

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

这是向量:

private:
std::向量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
是另一个类中的向量实例变量,我想确保该类的析构函数正确地清理
m_fapps

       for (int i=0, size=m_fapps.size();i<size;++i){
        delete m_fapps[i];
       }
for(int i=0,size=m_fapps.size();i您应该改为使用。界面相同,但它为您处理内存管理。有关是使用
ptr\u vector
还是使用
vector
的一些指导原则,您应该改为使用。界面相同,但它为您处理内存管理。有关是否使用
ptr\u vector的一些指导原则或<代码>向量 > 

< P>这是(有几个警告),但不被认为是习惯性C++,有充分的理由。

<>你应该强烈地考虑使用一个智能指针矢量(或者像一个智能向量,比如代码> Boo::pTrvector vector < /COD>),以避免不得不进行手动内存管理。

这也会给你免费的异常安全性,并且也会避免如果你的外部类是可复制的,那么严重的所有权问题。

这是有效的(有几个警告),但不被认为是习惯性C++,有充分的理由。

<>你应该强烈地考虑使用一个智能指针矢量(或者像一个智能向量,比如代码> Boo::pTrvector vector < /COD>),以避免不得不进行手动内存管理。
这还将免费为您提供异常安全性,并且还将避免在外部类可复制时发生的严重所有权问题。

因为还没有人给您直接的答案-是的,这是可以接受的,这是释放此内存的唯一方法,具有此
向量的声明


使用@OliCharlesworth建议的智能指针,或者使用@BjörnPollex提供的其他容器,都可以而且应该避免这种情况。

因为还没有人给你直接的答案-是的,这是可以接受的,这是释放内存的唯一方法,有了
向量的声明



使用@OliCharlesworth建议的智能指针,或者使用@BjörnPollex提供的其他容器,都可以而且应该避免这种情况。

你的向量是如何声明的?是的。但是不要这样做,而要查看
std::unique\u ptr
。@KirilKirov将来更新了问题,请发布完整的代码示例。这类问题的答案是什么问题往往比一开始想象的更复杂,提供一个完整的例子有助于确定问题(和答案)的范围。你的向量是如何声明的?是的。但是不要这样做,而要查看
std::unique_ptr
。@KirilKirov更新了问题。将来,请发布完整的代码示例。这些问题的答案通常比一开始想象的更复杂,提供完整的示例有助于定义问题的范围(以及答案)。或者
vector
,这可能是一个更好的默认选择,因为OP的代码中没有共享所有权的指示。正确的,我仍然停留在C++03上。或者
vector
,这可能是一个更好的默认选择,因为OP的代码中没有共享所有权的指示。正确的,我仍然停留在C++03上。谢谢您的实际帮助我很乐意为这个问题提供答案。感谢你为这个问题提供了答案。我倾向于同意另一个建议,即如果我没有其他理由将boost包含在我的project@SebbyJohanns当前位置一旦您进一步了解Boost,我相信您会找到很多理由将它包括在您的项目中。@SebbyJohanns:当然,现在标准库中有许多智能指针类型,请选择最适合您的用例的类型。我倾向于同意另一个建议,即如果我没有其他理由在我的项目中包括boost,那么
vector
自然适合这种类型project@SebbyJohanns:你一进去为了更进一步,我相信您会找到很多理由将其包括在您的项目中。@SebbyJohanns:当然,现在标准库中有许多智能指针类型,请选择最适合您的用例的类型。