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

alloca() 是什么?为什么不提倡使用它?在调用 alloca() 的函数返回的时候,它分配的内存会自动释放。也就是说,用 alloca 分配的内存在某种程度上局部于函数的 “堆栈帧"或上下文中。alloca() 不具可移植性,而且在没有传统堆栈的机器上很难实

大家好,欢迎来到IT知识分享网。alloca() 是什么?为什么不提倡使用它?

在调用 alloca() 的函数返回的时候, 它分配的内存会自动释放。也就是说, 用 alloca 分配的内存在某种程度上局部于函数的 “堆栈帧”  或上下文中。

alloca() 不具可移植性, 而且在没有传统堆栈的机器上很难实现。 当它的返回值直接传入另一个函数时会带来问题, 如  fgets(alloca(100), 100, stdin)。

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31273.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信