我读到有一个名为alloca的函数,它从当前函数的堆栈帧而不是堆中分配内存。该功能退出时,内存将自动销毁。
这有什么意义,与仅在函数内创建结构数组或局部变量的面板有什么区别?它们将进入堆栈,并在函数结束时被销毁。
PS:我看到了另一个alloca问题,但没有回答这两件事有何不同:)
最佳答案
使用alloca
,您可以创建一个动态数组(通常需要malloc
的东西),而且速度非常快。这里有GCC alloca
的优缺点:
http://www.gnu.org/s/hello/manual/libc/Variable-Size-Automatic.html#Variable-Size-Automatic
关于c - 为什么alloca与仅创建局部变量有什么不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7258836/