// 创建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添加与释放
最新推荐文章于 2018-10-08 16:50:00 发布