SrsAutoFree模式,避免内存泄漏和错误
来源:互联网 发布:sql注入用户名密码 编辑:程序博客网 时间:2024/05/20 05:27
C/C++中内存是一个很难处理的事情,正如强项就是弱项,强大的地方也是致命的地方。
内存不释放就会泄漏,多次释放就会段错误,越界更恐怖。
不释放和多次释放都可以用SrsAutoFree规避,越界就需要工具和经验的问题。
释放和多次释放,原因是内存或者对象的生命周期过程,譬如在一个while循环中,有些时候要释放,有些时候continue就好,就容易出问题。
真的需要活N久的对象吗?很少。大部分的作用域在当前函数和子函数,局部变量就可以搞定,是的,有些时候就是没有办法用局部变量,譬如由一个函数收取的包,在当前函数就需要释放。
考虑下面的逻辑:
从RTMP协议栈拿到包后,使用在这个作用域一定会释放,所以使用AutoFree就可以保证只释放一次,而且一定释放一次。AutoFree实现很可靠,用C++的构造和析构,以及宏定义就可以搞定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
来自CODE的代码片srs_core_auto_free.hpp
对比以下代码,没有使用auto free模式:
使用auto free模式后:
如下图:
阅读全文
0 0
- SrsAutoFree模式,避免内存泄漏和错误
- SrsAutoFree模式,避免内存泄漏和错误
- Android 避免内存泄漏
- 避免内存泄漏
- Android 避免内存泄漏
- 如何避免内存泄漏
- 如何避免内存泄漏
- c++避免内存泄漏
- 如何避免内存泄漏
- c++避免内存泄漏
- Android 避免内存泄漏
- 避免android 内存泄漏
- 如何避免内存泄漏?
- 避免内存泄漏问题
- 避免Context内存泄漏
- 详解java内存泄露和如何避免内存泄漏
- 详解java内存泄露和如何避免内存泄漏
- 什么是野指针和内存泄漏?如何避免野指针
- Django URLconfs 中通过包含其他URLconfs 来管理部分url相同的url
- Android获取相关目录
- 基于深度学习的自然场景文字识别
- Linux系统下强制踢掉登录用户
- 动态绑定 vs 静态绑定
- SrsAutoFree模式,避免内存泄漏和错误
- 面向对象设计原则之开闭原则
- svn的那些事
- java框架面试题
- 微信小程序 自定义 swiper 样式
- ubuntu换源为阿里云源
- C++中那些运算符不能重载
- Add Two Numbers--LeetCode
- jsp自定义标签的使用