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


在調用 alloca() 的函數返回的時候, 它分配的內存會自動釋放。也就是說, 用 alloca 分配的內存在某種程度上局部於函數的 ``堆棧幀"  或上下文中。

alloca() 不具可移植性, 而且在沒有傳統堆棧的機器上很難實現。 當它的返回值直接傳入另一個函數時會帶來問題, 如  fgets(alloca(100), 100, stdin)。

由於這些原因, alloca() 不合標准, 不宜使用在必須廣泛移植的程序中, 不管它可能多么有用。 既然 C99 支持變長數組(VLA), 它可以用來更好的 完成 alloca() 以前的任務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM