您的位置:首页 > 运维架构

CMapStringToPtr添加与释放

2015-11-17 16:57 239 查看
// 创建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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: