项目中的计时器模块是用libuv做的,今天发现了点问题,是释放uv_timer_t引起了,我是在uv_timer_start的回调里释放该结构的,这里是不能释放了,因为回调完后,库还会使用uv_timer_t里的数据,之前没出问题,是恰好这个内存还没有被使用,其数据还没被破坏。正确的释放时机,是再调用uv_close,在close的回调里释放它。我猜想uv_handle_t族安全释放的时机应该都是uv_close里,还需阅读源码确认。

ps:上文不对,timer的回调里可以释放uv_timer_t的内存,不影响任何使用,只是会造成uv_loop_t::handle_queue里有一个指针的泄露,因为uv_timer_t是uv_handle_t族,uv_handle_t在init时会被加入uv_loop_t::handle_queue,只有手动调用uv_close才会从哪里删除。

转载于:https://www.cnblogs.com/watercoldyi/p/5738921.html

uv_timer_t的释放问题相关推荐

  1. 如何释放电脑被限制的20%网速?

    很多朋友不管是看电影还是玩游戏,总觉得自己的网速慢,这跟自己所办网络的带宽有一定关系,但我们也要知道,我们的电脑在买来时,默认是限制了20%网速的,如何释放这20%的网速,提高用户体验呢!" ...

  2. 使用Singleton需要考虑内存释放

    GoF[p84]所说的Singleton没有考虑到内存的释放 解决方法: 1.加入一个成员函数DestroyInstance()来释放内存,在整个工程中需且仅需调用DestroyInstance()一 ...

  3. 释放变量所指向的内存_C++动态内存分配(学习笔记:第6章 15)

    动态内存分配[1] 动态申请内存操作符 new new 类型名T(初始化参数列表) 功能: 在程序执行期间,申请用于存放T类型对象的内存空间,并依初值列表赋以初值. 结果值: 成功:T类型的指针,指向 ...

  4. android释放acitity内存,Android 内存泄漏分析与解决方法

    在分析Android内存泄漏之前,先了解一下JAVA的一些知识 1. JAVA中的对象的创建 使用new指令生成对象时,堆内存将会为此开辟一份空间存放该对象 垃圾回收器回收非存活的对象,并释放对应的内 ...

  5. js 多维数组长度_C++申请与释放动态数组1(学习笔记:第6章 16)

    分配和释放动态数组[1] 分配: new 类型名T [ 数组长度 ] 数组长度可以是任何表达式,在运行时计算 释放:delete[] 数组名p 释放指针p所指向的数组. p必须是用new分配得到的数组 ...

  6. Java8 新的 try-with-resources 语句,自动资源释放

    读取文件后需要释放资源,对于占用内存比较大的,非常重要: (1)读取文件内存占用较多的优化方式: 一次读取部分处理完继续读取,可以有效的减少内存的占用: 使用RandomAccessFile可以从文件 ...

  7. Tensorflow::Session 释放内存

    使用tensorflow::Session是要释放的,否则循环起来,崩溃到怀疑人生. 方法一: 使用Close() tensorflow::Session * session;tensorflow:: ...

  8. Rocksdb 内存“不释放”问题 分析

    文章目录 问题场景描述 问题复现 编写随机写 测试工具 使用工具抓取内存分配过程 源码分析 memtable逻辑 table_cache逻辑 总结 整体的IO场景到底层的源码分析过程如上导图,接下来将 ...

  9. WPF关闭应用程序,释放Window窗口资源方法

    WindowsForm里一个Application.Exit();方法就可以关闭应用程序,释放掉资源. WPF里Application类没有该方法,但是有一个Exit的事件驱动,在WPF应用程序里面关 ...

最新文章

  1. 字节跳动开源最新GAN压缩算法,算力消耗可减少至1/46
  2. gtx1080 驱动 linux,CentOS 7安装Nvidia GTX1080显卡驱动
  3. 重磅 !89页PPT揭秘AI产业爆发的拐点(附完整版下载)
  4. 交叉编译qt-everywhere-opensource-src-4.6.2需要的几个包
  5. [BZOJ1007] [HNOI2008] 水平可见直线 (凸包)
  6. Vue + Element UI 实现权限管理系统 前端篇(七):功能组件封装
  7. RT-Thread的位图调度算法分析(最新版)
  8. 知乎爬虫之4:抓取页面数据
  9. java入门就是死敲代码吗_JAVA入门第二季综合练习(直接思考敲的代码,面向过程,不好)...
  10. Tuxera Ntfs for mac内核扩展批准不了怎么办 手动批准mac内核扩展
  11. 如何使用清理垃圾软件优化苹果电脑
  12. ⌊N/1⌋,⌊N/2⌋,...⌊N/N⌋的值的集合的分析
  13. 《Linux命令行大全》第2版来啦!这一版做了哪些更新?
  14. Systrace工具解析
  15. 计算机无法从usb启动不了,无法从u盘启动【设置思路】
  16. Android 使用 百度地图 测量 多边形面积
  17. 额,我要说一件重要的事+用C++编写一个走迷宫小游戏(1.1版)
  18. 零基础入门编程神器!苹果的免费编程应用出了Mac版了
  19. 提升网站关键词排名的技巧
  20. php phpmailer 发送邮件

热门文章

  1. linux下查看网卡型号
  2. Eclipse插件安装
  3. python3 tkinter电子书_python3 tkinter实现添加图片和文本
  4. 【Python自动化测试】setuptools
  5. 从变量地址到指针再到指针变量
  6. (C++)1032 挖掘机技术哪家强
  7. (C++)1022 D进制的A+B 除基取余法将10进制数换成给定进制数
  8. php返回结果判断,老司机在判断返回结果时翻了个身(ThinkPHP)
  9. 参加web前端开发培训具体要学什么内容
  10. 如何挑选一家好的软件测试培训机构