博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux C 内存管理方式之半动态
阅读量:6969 次
发布时间:2019-06-27

本文共 496 字,大约阅读时间需要 1 分钟。

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

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

#include 
void *alloca (size_t size)

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

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

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

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

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

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

转载于:https://www.cnblogs.com/san-fu-su/p/5741705.html

你可能感兴趣的文章
ASP.NET页面在IE缓存问题的解决
查看>>
最简单的Epoll模型代码
查看>>
数据结构之字符串
查看>>
blob字段存储文件并读取
查看>>
Process
查看>>
1.1 合用weightSum属性和layout_weight属性
查看>>
linux 查看端口是否被占用
查看>>
Http与协议TCP协议简单易懂
查看>>
使用 JavaScript 实现基本队列、优先队列和循环队列
查看>>
安卓图表引擎AChartEngine(二) - 示例源码概述和分析
查看>>
python模块之imghdr(识别不同格式的图片文件)
查看>>
HDU 1823 Luck and Love 二维线段树
查看>>
ecshop二次开发常用代码
查看>>
GCD编程 之 略微提高篇
查看>>
第十四章 数字签名算法--RSA
查看>>
Deep Learning for Nature Language Processing --- 第四讲(下)
查看>>
第一次打开Photoshop时的基本设置
查看>>
讲座:计算机专业及其学习
查看>>
CentOS 7 启动、重启、chkconfig等命令已经合并为systemctl
查看>>
POI 中的CellRangeAddress 参数
查看>>