我读到有一个名为 alloca 的函数,它从当前函数的栈帧而不是堆中分配内存。内存在函数退出时自动销毁。
这有什么意义,它与在函数中创建结构数组或局部变量有何不同?它们会进入堆栈并在函数结束时也被销毁。
PS:我看到了另一个 alloca 问题,但它没有回答这两个问题有何不同 :)
最佳答案
当您使用 alloca
时,您可以在运行时指定您想要的字节数。对于局部变量,数量在编译时是固定的。请注意,alloca
早于 C 的可变长度数组。
关于c - 为什么 alloca 不同于仅仅创建一个局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7258836/