CMapStringToPtr添加与释放

  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. void* rVal=NULL;
  12. if(m_prjFiles.Lookup(fi->strName,rVal)){
  13. delete fi;
  14. fi = NULL;
  15. }else{
  16. m_prjFiles.SetAt(fi->strName,fi);
  17. }
  18. }
  19. // 释放MapStringToPtr
  20. for(POSITION pos=m_prjFiles.GetStartPosition();pos;){
  21. CString strKey;
  22. ST_LINE_INFO* val = NULL;  // 注意这里必须是添加时的变量类型,如果用void*,则会有内存泄露。
  23. m_prjFiles.GetNextAssoc(pos,strKey,(void*&)val);    // 这里把定义的变量类型转换为void*&。
  24. if (val)
  25. {
  26. delete val;
  27. val = NULL;
  28. }
  29. }
  30. m_prjFiles.RemoveAll();
时间: 2024-10-12 19:49:32

CMapStringToPtr添加与释放的相关文章

Atitit.aticmd v4  新特性q39 添加定时器释放功能

Atitit.aticmd v4  新特性q39 添加定时器释放功能 V1  实现兰cmd V2 标准输入,标准输出,标准错误与重新定向 V3  stdout stderr统一重新定向 V4  添加定时器释放功能 V5   兼容性的.net java php V6   bigfile output的solu  ,arg sh all total ret... 作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:

为对象添加一个释放时触发的block

有时我们需要在一个对象生命周期结束的时候触发一个操作,希望当该对象dealloc的时候调用一个外部指定的block,但又不希望直接hook dealloc方法,这样侵入性太强了.下面贴一段非常简单的实现方式,通过一个category给外部暴露一个block注入的接口,内部将该block封装到一个寄生对象中(Parasite),该寄生对象在dealoc的时候触发block调用,所有的寄生对象通过runtime的AssociatedObject机制与宿主共存亡,从而达到监控宿主生命周期的目的. 注意

(转)FirstResponder 释放问题

FirstResponder 释放问题 转自:http://www.cnblogs.com/smileEvday/archive/2012/03/18/2405190.html View的FirstResponder的释放问题 今天遇到一个问题,当我隐藏掉一个正在接受用户输入的UITextField的时候,键盘并不会消失,而且键盘仍然接受用户输入,再次显示该TextField时候发现在隐藏状态下,所有的输入仍然传输到了该TextField中,于是查下官方资料找到如下解释: Important I

ci框架连接数据库资源无法释放

使用ci框架提供的类查询数据: $this->load->database();      $query = $this->db->query($sql); 程序运行一段时间之后,报错,告知数据库too many connections 很明显mysql数据库连接资源超过了 max_connections 设定值.立马在每个查询之后,添加资源释放脚本: $this->db->close(); 仍然无法释放资源,怎么办呢?查看手册之后,知道了,只要把pconnect设置为

高性能 TCP Socket连接关闭释放集中调度类

/// <summary> /// Socket关闭调度类,此类提供了静态访问,但是此类可以实例化 /// </summary> /// <remarks> /// Socket连接关闭类 /// 3个队列 /// 1.shotdown 关闭队列 /// 步骤1 /// 2.close 队列 间隔2秒 /// 步骤2 /// 3.dispose 队列 间隔1秒 /// 步骤3 /// </remarks> public class CloseSoketDis

关于QSocket的释放的一个需要注意的情况

最近在用QtNetwork编写服务器程序进行TCP/IP通信,大体过程如下: 1. 创建一个QTcpServer实例,监听目标IP和端口: 2. 一旦监听到有连接,获取和客户端之间的socket: 3. 使用socket进行通信: 4. 通信结束后,可以手动释放socket,也可以不管它,在释放QTcpServer的时候会把其下的所有socket全部自动释放. 在编写时,我做了如下事: TcpNetwork::TcpNetwork() { ... connect(mySocket, SIGNAL

VC++ GUI桌面程序添加控制台调试输出

VC++ GUI桌面程序添加控制台调试输出 GUI控制台 GUI桌面应用程序添加控制台只需按如下步骤在代码中添加即可: 1. 第一步:引入头文件 #include "stdio.h" 2.第二步:在程序开始部分添加如下代码 AllocConsole(); freopen("CONOUT$", "w", stdout);//开启中文控制台输出支持 3. 第三步:程序结束部分添加 FreeConsole(); //释放 原文地址:https://ww

iOS基础 ----- 内存管理

Objective-C 的内存管理方式有引用计数机制,垃圾回收机制,自动释放池.有alloc,就有释放.iOS应?程序出现Crash(闪退),90%的原因是因为内存问 题.在?个拥有数?个甚?是上百个类的?程?,查找内存问 题极其困难,学会内存管理,能帮我们减少出错的?率.内存问题体现在两个??:内存溢出.野指针异常. 引用计数器 在Xcode4.2及之后的版本中由于引入了ARC(Automatic Reference Counting)机制,程序编译时Xcode可以自动给你的代码添加内存释放代

【温故而知新-Javascript】使用拖放

HTML5 添加了对拖放(drag and drop)的支持.我们之前只能依靠jQuery 这样的JavaScript库才能处理这种操作.把拖放内置到浏览器的好处是它可以正确的集成到操作系统中,而且正如将要看到的,它能跨浏览器工作. 1. 创建来源项目 我们通过 draggable属性告诉浏览器文档里的哪些元素可以被拖动.这个值有三个允许的值: 它的默认值是auto,即把决定权交给浏览器,通常来说这就意味着所有元素默认都是可拖动的,我们必须显示设置draggable 属性为false 来禁止拖动