内存分配函数——alloca()
来源:互联网 发布:火箭炮手升级数据最新 编辑:程序博客网 时间:2024/05/18 11:20
C语言中常用的内存分配函数主要有malloc()、calloc()、realloc(),这些函数用于从堆中动态获得一块内存。一般为了避免发生内存泄露的现象,每次调用这些函数时都会在其后有对应的free()函数出现,然而有时候可能不知道如何调用free来与先前的malloc等相对应,那么就有可能造成内存泄露!有没有什么办法不使用free函数来释放内存却能有效避免内存泄露现象发生呢?办法是有的!那就是在可能的时候使用alloca()来分配动态内存。这是因为在调用alloca()返回时,它所分配的内存空间会被自动释放!
其实,alloca()是在栈(stack)上申请空间的,而栈内存一般可以由编译器自动释放。既然是在栈内申请内存,这就决定了其固有的局限性。其一是不适用于那些比创建它们的函数生命周期更长的结构;其二是不具可移植性,而且在没有传统堆栈的机器上很难高效地实现。这是因为当它的返回值直接传入另一个函数时会带来问题。这就决定了alloca()不宜使用在需要广泛移植的程序中,这也是很多人不太提倡使用alloca()的一个原因。
参考文献:
1、http://baike.baidu.com/view/3977355.htm?fr=ala0_1_1
2、《C专家编程》P159.
- 内存分配函数——alloca()
- malloc、calloc、realloc、alloca几个内存分配函数的区别
- 【C语言】动态内存分配alloca
- alloca——可以在栈中动态分配内存的函数
- alloca——可以在栈中动态分配内存的函数
- 在栈中分配内存的方法 alloca 例子
- alloca 函数
- 动态内存申请函数选择(realloc、malloc 、alloca、 calloc)
- 动态内存申请函数选择(realloc、malloc 、alloca、 calloc)
- c语言内存函数malloc、calloc、realloc、alloca比较
- c语言内存函数malloc、calloc、realloc、alloca比较
- alloca的内存泄漏
- C内存—>内存分配
- 堆,栈,函数,alloca
- 笔记–alloca函数
- 关于alloca()函数
- 内存分配——realloc()函数的使用
- 内存分配——realloc()函数的使用
- request.getParameterMap()
- 网络工程就业方向
- 系统测试注意点
- VC画小三角形
- 中国人唯一不认可的成功——就是家庭的和睦,人生的平淡
- 内存分配函数——alloca()
- jQuery UI的CSS框架
- 网页打印设置+自带的打印预览+去掉打印时的页眉页脚+屏蔽打印
- UITextField 垂直居 最右侧放图片
- VC浏览器相关的学习(六)(IDispEventImpl包装的主要方法)
- 排序算法实现大全
- 数据结构笔记
- OTL资料简编
- 工具条研究手记(8)- 关于工具条按钮文字的显示