gpt4 book ai didi

c - 为什么 alloca() 的使用不被认为是好的做法?

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:51 28 4
gpt4 key购买 nike

alloca() 在堆栈上而不是在堆上分配内存,如 malloc() 的情况。所以,当我从例程返回时,内存被释放。所以,实际上这解决了我释放动态分配内存的问题。释放通过 malloc() 分配的内存是一个令人头疼的问题,如果不知何故错过会导致各种内存问题。

尽管有上述特性,为什么不鼓励使用 alloca()

最佳答案

答案就在 man 页面(至少在 Linux 上):

RETURN VALUE The alloca() function returns a pointer to the beginning of the allocated space. If the allocation causes stack overflow, program behaviour is undefined.

这并不是说永远不应该使用它。我从事的一个 OSS 项目广泛使用它,只要您不滥用它(alloca'ing huge values),它就很好。一旦超过“几百字节”标记,就该改用 malloc 和 friend 了。您可能仍然会遇到分配失败,但至少您会有一些失败的迹象,而不仅仅是炸毁堆栈。

关于c - 为什么 alloca() 的使用不被认为是好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51091091/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com