看到半动态申请内存,第一反应这是什么鬼?

  实际上半动态内存申请很容易理解,在GNU C中使用alloca函数来实现

#include <stdlib.h>
void *alloca (size_t size)

  alloca函数可以像malloc一样动态申请内存(注意所申请的内存位置在调用函数的栈里面,页因此在调用函数结束后自动释放)

好处是显而易见的:既可以自由得申请空间,又不需要手动释放内存。

坏处是:发生错误时,无法得到一个清晰得错误消息。还有就是,非GNU系统不支持alloca,这是一个BSD扩展,兼容性不好。(其他平台可能会使用C写一个模拟得alloca,但效率不好)

  在GNU C中得大部分情况下,你可以使用可变大小的数组代替alloca。

区别:  可变大小的数组只在数组名所在的区域有效,超过则释放。alloca 申请的空间则一直保留的函数结束。

     alloca可以在循环体中使用,每次循环都逐步增加内存空间。而可变大小的数组不行。

最新文章

  1. 将 C# 编译为原生机器码
  2. 如何使用vim的帮助功能
  3. 周游加拿大(dp好题)
  4. 设置Session的超时时间
  5. jchat:linux聊天程序3:服务器
  6. hdu 2838 Cow Sorting(树状数组)
  7. gstreamer在Ubuntu下构建开发环境
  8. 云计算之路-阿里云上-容器难容:优化自建 docker swarm 集群的部署
  9. 【Visual C++】游戏编程学习笔记之四:透明动画实现
  10. C# 中利用 CRC32 值判断文件是否重复
  11. Scala映射与元组篇
  12. java ----&gt; java.lang.NoClassDefFoundError
  13. 2018.12.31 NOIP训练 偶数个5(简单数论)
  14. 团队作业——Beta冲刺5
  15. yii---where or该如何使用
  16. Flask从入门到精通之flask安装
  17. Oracle学习笔记之四,SQL语言入门
  18. Servlet与WebService关系
  19. 解决App can’t be opened because it is from an unidentified developer
  20. winform listview默认第一项光标选中

热门文章

  1. 结构体(struct)与类(class)
  2. [Angular] Angular CLI
  3. PHP怎么读写XML?(四种方法)
  4. android生成分享长图而且加入全图水印
  5. 【t019】window(线段树做法)
  6. Javascript中的DOM实现显示鼠标的空间位置
  7. OOA/OOD/OOP 转载
  8. 并发编程--CAS自旋锁
  9. 一题多解(五) —— topK(数组中第 k 大/小的数)
  10. web IDE Eclipse Che安装