我不想使用智能指针。

她是我的密码。

CCOLFile *pCOLFile = CCOLManager::getInstance()->parseFile(strCOLPath); // returns instance of CCOLFile
// ...
pCOLFile->unload(); // hoping to comment this out, and use destructor instead.
delete pCOLFile;

struct CCOLFile
{
    std::string                     m_strFilePath;
    std::vector<CCOLEntry*>         m_vecEntries;
};

void                CCOLFile::unload(void)
{
    for (auto pCOLEntry : m_vecEntries)
    {
        delete pCOLEntry;
    }
    m_vecEntries.clear();
}


在c ++中,注释我对CCOLFile :: unload的调用,然后将代码从CCOLFile :: unload方法移至CCOLFile析构函数是否安全?

最佳答案



析构函数的全部目的是允许您在释放对象内存之前清理对象。因此,所有成员都可以正常访问,就像在常规方法中一样。

只是要警惕不要从析构函数中引发异常,并要小心在所有情况下正确使用内存语义(副本构造函数,赋值等),以防止泄漏或释放两次。

07-24 09:54