linux C 内存管理方式之半动态
2024-08-31 23:04:25
看到半动态申请内存,第一反应这是什么鬼?
实际上半动态内存申请很容易理解,在GNU C中使用alloca函数来实现
#include <stdlib.h>
void *alloca (size_t size)
alloca函数可以像malloc一样动态申请内存(注意所申请的内存位置在调用函数的栈里面,页因此在调用函数结束后自动释放)
好处是显而易见的:既可以自由得申请空间,又不需要手动释放内存。
坏处是:发生错误时,无法得到一个清晰得错误消息。还有就是,非GNU系统不支持alloca,这是一个BSD扩展,兼容性不好。(其他平台可能会使用C写一个模拟得alloca,但效率不好)
在GNU C中得大部分情况下,你可以使用可变大小的数组代替alloca。
区别: 可变大小的数组只在数组名所在的区域有效,超过则释放。alloca 申请的空间则一直保留的函数结束。
alloca可以在循环体中使用,每次循环都逐步增加内存空间。而可变大小的数组不行。
最新文章
- 将 C# 编译为原生机器码
- 如何使用vim的帮助功能
- 周游加拿大(dp好题)
- 设置Session的超时时间
- jchat:linux聊天程序3:服务器
- hdu 2838 Cow Sorting(树状数组)
- gstreamer在Ubuntu下构建开发环境
- 云计算之路-阿里云上-容器难容:优化自建 docker swarm 集群的部署
- 【Visual C++】游戏编程学习笔记之四:透明动画实现
- C# 中利用 CRC32 值判断文件是否重复
- Scala映射与元组篇
- java ---->; java.lang.NoClassDefFoundError
- 2018.12.31 NOIP训练 偶数个5(简单数论)
- 团队作业——Beta冲刺5
- yii---where or该如何使用
- Flask从入门到精通之flask安装
- Oracle学习笔记之四,SQL语言入门
- Servlet与WebService关系
- 解决App can’t be opened because it is from an unidentified developer
- winform listview默认第一项光标选中