严重内存泄露问题,高手来看看
本人第一次写c++程序,在run了一段程序后,整个程序crash掉,代码如下:
void CFileUtils::addRecordToList(Record record)
{
long thread_id = record.thread_id;
KeyMap::iterator pIter;
if(record.enter_exit == 2 && record.stack_depth == 1) // 结束标记
{
for(pIter = recordMap->begin(); pIter != recordMap->end(); pIter++)
{
if((*pIter).first == thread_id)
{
EvtList list = (*pIter).second;
EvtList::iterator lIter;
for(lIter = list.begin();lIter != list.end();lIter++)
{
writeRecordToFile(&(*lIter));
}
recordMap->erase(pIter);
break;
}
}
writeRecordToFile(&record);
}
else
{
for(pIter = recordMap->begin(); pIter != recordMap->end(); pIter++)
{
if((*pIter).first == thread_id)
{
EvtList list = (*pIter).second;
list.push_back(record);
recordMap->erase(pIter);
recordMap->insert(Pr(thread_id,list));
return;
}
}
//第一个event,直接插入到hashmap
EvtList list;
list.push_back(record);
recordMap->insert(Pr(record.thread_id,list));
}
}
类型定义
typedef list<Record> EvtList;
typedef hash_map<long, EvtList > KeyMap;
typedef hash_map<long, EvtList >::value_type Pr;
struct Record
{
public:
Record()
{
user_name = " ";
thread_id = 0;
}
virtual ~Record()
{
}
long thread_id;
string user_name;
};
请高手不吝赐教,200分相送。