7.9 C语言中alloca()是什么?为什么不提倡使用它?

在调用alloca() 的函数返回的时候, 它分配的内存会自动释放。

也就是说, 用alloca 分配的内存在某种程度上局部于函数的“堆栈帧” 或上下文中。

alloca() 不具可移植性, 而且在没有传统堆栈的机器上很难实现。

当它的返回值直接传入另一个函数时会带来问题, 如fgets(alloca(100), 100, stdin)。

由于这些原因, alloca() 不合标准, 不宜使用在必须广泛移植的程序中, 不管它可能多么有用。

既然C99 支持变长数组(VLA), 它可以用来更好的完成alloca() 以前的任务。

参见问题7.19。

永不止步步 发表于01-16 14:35 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308317个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号