[英]delete memory safely in destructor
我有以下代码:
CCOLFile *pCOLFile = CCOLManager::getInstance()->parseFile(strCOLPath);
// ...
pCOLFile->unload();
delete pCOLFile;
内存由parseFile()函数分配,并存储在pCOLFile对象的std :: vector中。 我可以将代码从unload()方法移至CCOLFile析构函数以安全地删除分配的内存吗?
我猜析构函数可能是为此目的而设计的?
目标是迭代std :: vector并在每个值上使用delete。
这是我的CCOLFile结构:
struct CCOLFile
{
std::string m_strFilePath;
std::vector<CCOLEntry*> m_vecEntries;
};
这是当前的unload()方法:
void CCOLFile::unload(void)
{
for (auto pCOLEntry : m_vecEntries)
{
delete pCOLEntry;
}
m_vecEntries.clear();
}
如果声明std::vector<std::unique_ptr<CColEntry>> m_vecEntries
则不需要unload
方法; 相反,在析构函数中,只需delete m_vecEntries
。 该vector
将清除其条目,并且由于它们是unique_ptr
,因此它们将删除自己。
因此,在析构函数中将unload()
减少为一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.