alloca的内存泄漏
来源:互联网 发布:2017淘宝新店怎么做 编辑:程序博客网 时间:2024/06/02 04:46
忘了从什么时候开始,不喜欢在堆上分配内存空间,这种内存需要自己手动释放。原以为使用alloca在栈上分配空间,程序就自动释放了,但还有些细节要注意。
最近使用QNX的PPS服务做IPC通信,pps decoder系列的接口都是传入指针,但decoder只有初始化init接口,而没有create接口。init接口要事先分配出decoder使用的空间。通常,最简单的做法就是定义一个局部变量,然后取地址传入后续的接口,但我嫌麻烦,每个参数都要多写个&,这对于惜字如金的我可不舒服(同理,再定义个指针指过去也不爽)。于是,就直接定义个指针再通过alloca在栈空间分配,之后直接用这个指针就行了,也不用主动释放。
由于代码存在无限循环,我在内层按照以上思路实现,结果程序运行一会儿就挂了,GDB也跟不出问题(栈乱了)。想了很久才发现,自己对alloca的理解有问题,man alloca提示:
DESCRIPTION The alloca() function allocates size bytes of space in the stack frame of the caller. This temporary space is automatically freed when the function that called alloca() returns to its caller.RETURN VALUE The alloca() function returns a pointer to the beginning of the allocated space. If the allocation causes stack overflow, program behavior is undefined.
这里明确说明,alloca的内存在函数退出时释放,所以,我使用alloca也内存泄露啦!
1 0
- alloca的内存泄漏
- malloc、calloc、realloc、alloca几个内存分配函数的区别
- 在栈中分配内存的方法 alloca 例子
- alloca的运用
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- 内存泄漏的最新进展
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Eclipse Java注释模板设置详解
- 关于复选框多重值传到后台的问题
- TN25 文档,视图和框架之创建
- Objective-C入门05:自定义构造函数
- CSS display:table属性用法解析
- alloca的内存泄漏
- Redis学习7之Predis连接redis过程和测试
- 冒泡排序及其优化
- 数字与字符串相互转化(Unicode)
- http请求头及响应头等
- AP聚类
- Xml语法
- session对象生命周期
- 工作常用第三方框架