CMapStringToPtr添加与释放
2024-09-04 15:44:20
- // 创建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();
最新文章
- 图解javascript
- java第二周周学习总结
- 浅谈ajax
- Atitit常见的标准化组织与规范数量jcp ecma iso
- C++笔记 之 基础回顾(一)
- <;!DOCTYPE>;标签的定义与用法
- codevs 2216 线段树 两种更新方式的冲突
- datagrid combobox事件更新编辑状态下的datagrid行
- .Net并行编程
- js观察者模式
- About GAC
- Raid1源代码分析--一些补充
- 80端口被NT kernel &; System 占用pid= 4的解决方法
- XDocument读取xml的所有元素以及XPath语法
- 迈向angularjs2系列(6):路由机制
- node05
- appium常用方法
- JFrame、JPanel 、Layout开发的简单例子
- linuxC/C++面试问题总结整理
- 深入理解C语言的函数调用过程 【转】