//代码的大概流程就是这样
typedef struct _MyStruct
{
DWORD dw1;
DWORD dw2;
TCHAR sz1[MAX_PATH]
}MyStruct, *PMyStruct;vector<PMyStruct> m_pVec;//保存结构体指针到vector
for(int i = 0; i < 10; i++)
{
PMyStruct pStruct = new MyStruct;
m_pVec.push_back(pStruct);
}//退出时释放指针
vector<PMyStruct>::iterator iter = m_pVec.begin();
for(; iter != m_pVec.end(); iter++)
{
delete *iter
}
m_pVec.clear()
//m_pVec中保存了10个指针,泄漏的大小刚好是10*4,整整40字节。退出后,提示内存泄漏,而泄漏的地址xxxxxxxx【包含内容】恰好是m_pVec保存的指针地址.
就类似我new了10块内存,这些内存指针是保存在一个集合中。我把这10块内存给del掉了,而保存这10个地址的集合发生了泄漏。
//退出时释放指针
vector<PMyStruct>::iterator iter = m_pVec.begin();
for(; iter != m_pVec.end(); iter++)
{
//liuyy-A(2013.03.07)先释放结构体中数组内存
delete[] (*iter)->sz1;
delete *iter;
//liuyy-E
}
m_pVec.clear()