// 创建MapStringToPtr
CMapStringToPtr m_prjFiles;
CStringList m_fileList;
m_fileList.AddTail(_T("C:\\a"));
m_fileList.AddTail(_T("C:\\b"));
m_fileList.AddTail(_T("C:\\c"));
// 遍历CStringList变量,添加到CMapStringToPtr
for(POSITION pos=m_fileList.GetHeadPosition();pos;m_fileList.GetNext(pos)){
ST_LINE_INFO* fi=new ST_LINE_INFO; // 一个自定义的结构,定义了strPath变量
fi->strPath=m_fileList.GetAt(pos);
void* rVal=NULL;
if(m_prjFiles.Lookup(fi->strName,rVal)){
delete fi;
fi = NULL;
}else{
m_prjFiles.SetAt(fi->strName,fi);
}
}
// 释放MapStringToPtr
for(POSITION pos=m_prjFiles.GetStartPosition();pos;){
CString strKey;
ST_LINE_INFO* val = NULL; // 注意这里必须是添加时的变量类型,如果用void*,则会有内存泄露。
m_prjFiles.GetNextAssoc(pos,strKey,(void*&)val); // 这里把定义的变量类型转换为void*&。
if (val)
{
delete val;
val = NULL;
}
}
m_prjFiles.RemoveAll();
CMapStringToPtr添加与释放
最新推荐文章于 2020-09-29 08:28:38 发布
本文详细介绍了如何使用C++中的CStringList和CMapStringToPtr进行项目文件管理,并通过遍历和内存释放操作优化内存使用,确保程序运行效率和资源管理。
4865

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



