开发者社区> 问答> 正文

alloca() 是什么?为什么不提倡使用它?

alloca() 是什么?为什么不提倡使用它?

展开
收起
游客56pszsvgthciu 2022-03-29 02:33:18 422 0
1 条回答
写回答
取消 提交回答
  • 在调用 alloca() 的函数返回的时候, 它分配的内存会自动释放。也就是说, 用 alloca 分配的内存在某种程度上局部于函数的 ``堆栈帧" 或上下文中。 alloca() 不具可移植性, 而且在没有传统堆栈的机器上很难实现。 当它的返回值直接传入另一个函数时会带来问题, 如 fgets(alloca(100), 100, stdin)。

    由于这些原因, alloca() 不合标准, 不宜使用在必须广泛移植的程序中, 不管它可能多么有用。 既然 C99 支持变长数组(VLA), 它可以用来更好的 完成 alloca() 以前的任务。

    2022-03-29 02:33:58
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
研发过程中的那些反模式 立即下载
持续交付背后的故事:重构性格成为优秀的叛逆者 立即下载
团队和工程管理的取舍 立即下载