qiuri2008

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1. // 创建MapStringToPtr  
  2. CMapStringToPtr m_prjFiles;  
  3. CStringList m_fileList;  
  4. m_fileList.AddTail(_T("C:\\a"));  
  5. m_fileList.AddTail(_T("C:\\b"));  
  6. m_fileList.AddTail(_T("C:\\c"));  
  7. // 遍历CStringList变量,添加到CMapStringToPtr  
  8. for(POSITION pos=m_fileList.GetHeadPosition();pos;m_fileList.GetNext(pos)){  
  9.     ST_LINE_INFO* fi=new ST_LINE_INFO;  // 一个自定义的结构,定义了strPath变量  
  10.     fi->strPath=m_fileList.GetAt(pos);  
  11.   
  12.     void* rVal=NULL;  
  13.     if(m_prjFiles.Lookup(fi->strName,rVal)){  
  14.         delete fi;  
  15.         fi = NULL;  
  16.     }else{  
  17.         m_prjFiles.SetAt(fi->strName,fi);  
  18.     }             
  19. }  
  20. // 释放MapStringToPtr  
  21. for(POSITION pos=m_prjFiles.GetStartPosition();pos;){  
  22.     CString strKey;  
  23.     ST_LINE_INFO* val = NULL;  // 注意这里必须是添加时的变量类型,如果用void*,则会有内存泄露。  
  24.     m_prjFiles.GetNextAssoc(pos,strKey,(void*&)val);    // 这里把定义的变量类型转换为void*&。  
  25.     if (val)  
  26.     {  
  27.         delete val;  
  28.         val = NULL;  
  29.     }  
  30. }  
  31. m_prjFiles.RemoveAll();  
posted on 2015-11-17 16:57  江召伟  阅读(781)  评论(0编辑  收藏  举报