if (m_pMapVectorSymbol != NULL)
{
for (TMapVectorSymbol::TMapIterator iter = m_pMapVectorSymbol->m_pMapParameter->begin(); iter != m_pMapVectorSymbol->m_pMapParameter->end(); ++iter)
{
TVectorSymbol *pVectorSymbol = iter->second;
if (pVectorSymbol != NULL)
{
for (TVectorSymbol::iterator iter1 = pVectorSymbol->begin(); iter1 != pVectorSymbol->end(); ++iter1)
{
CMapSingleParameter *pMapSingleParameter = *iter1;
SAFE_DELETE(pMapSingleParameter);
}
SAFE_DELETE(pVectorSymbol);
}
}
SAFE_DELETE(m_pMapVectorSymbol);
}
if (m_pLatelyVectorSymbol != NULL)
{
for (TVectorSymbol::iterator iter = m_pLatelyVectorSymbol->begin(); iter != m_pLatelyVectorSymbol->end(); ++iter)
{
CMapSingleParameter *pMapSingleParameter = *iter;
SAFE_DELETE(pMapSingleParameter);
}
SAFE_DELETE(m_pLatelyVectorSymbol);
}其中
m_pMapVectorSymbol 的原型是:TMapVectorSymbol *m_pMapVectorSymbol;
typedef vector<CMapSingleParameter*> TVectorSymbol;
typedef MapParameter<xstring, TVectorSymbol*> TMapVectorSymbol;
<pre name="code" class="cpp">m_pLatelyVectorSymbol 的原型是:TVectorSymbol *m_pLatelyVectorSymbol;

这篇博客探讨了如何正确释放C++中多层嵌套的map和vector的内存。通过示例代码展示了针对TMapVectorSymbol和TVectorSymbol类型的指针,使用迭代器遍历并逐个删除CMapSingleParameter对象,确保内存得到妥善管理。重点在于理解智能指针与手动内存管理在多层数据结构中的应用。
3011

被折叠的 条评论
为什么被折叠?



