定义变量:
typedef std::map< CString, CValue> CVarMap;
typedef std::list< CVarMap> CVarMapStack;
 
 
CVarMapStack m_VarMapStack;
};清除memory:
void CVarTable::Clear()
{
m_VarMapStack.clear();
 
m_VarMapStack.push_back(CVarMap());
}
这样清除,CVarMap中的变数是否也同时被erase掉。

解决方案 »

  1.   

    不需要啊,没有指针的
    什么意思,没动。是说这样的Clear方法就可以全部释放memory了吗?
      

  2.   

    感觉这样应该不行,建议你调试一下,看看Clear的时候有没有执行CString或CValue的析构函数。
      

  3.   

    一般来说这样就可以了,但可能会与你的CValue有关。
    你的CValue具体是什么?有没有指针成员变量指向堆内存?如果有,那么这些堆内存又没有其他指针所指向,且正确释放的话,就会造成内存泄漏了。