c - 为什么 alloca 不同于仅仅创建一个局部变量?

标签 c unix

我读到有一个名为 alloca 的函数,它从当前函数的栈帧而不是堆中分配内存。内存在函数退出时自动销毁。

这有什么意义,它与在函数中创建结构数组或局部变量有何不同?它们会进入堆栈并在函数结束时也被销毁。

PS:我看到了另一个 alloca 问题,但它没有回答这两个问题有何不同 :)

最佳答案

当您使用 alloca 时,您可以在运行时指定您想要的字节数。对于局部变量,数量在编译时是固定的。请注意,alloca 早于 C 的可变长度数组。

关于c - 为什么 alloca 不同于仅仅创建一个局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7258836/

相关文章:

c - 强制 .so 模块使用 libc 函数以防重复函数

linux - 如何将包含空格的变量分配给 KSH 中的另一个变量

linux - 在 shell 中递归地从备份文件恢复

windows - OFBiz 和 UNIX 令人头疼的问题

regex - 如何使用SED从文件中删除CTRL-A字符?

c - 我怎样才能使 fscanf 更多 'stringent' 或完全不同的方法来解决我的额外行?

C++ 第 3 方库包含不存在的头文件?

c - 使用 epoll 时如何确保我阅读了完整的消息

linux - 使用 bash 返回码进行编程是一种好方法吗?

c - 为什么我的 vigenere.c 不工作?