【发布时间】:2022-01-11 05:15:26
【问题描述】:
考虑到一旦调用函数(在将变量推送给函数之后),C 中函数内的局部变量就会被推送到堆栈中,在堆栈缓冲区之前对所述变量的数量是否有任何限制溢出?还是该限制仅由确定的主机拥有的 RAM 量给出?
我试图通过创建一个 4,6gb .C 文件来测试这一点,该文件具有一个声明了 25000*13 个变量并初始化为 0 的函数。所述函数在 main() 内部被调用,但它编译得很好(使用 - O0) 并且它没有崩溃。
【问题讨论】:
-
在 Windows、macOS 和 Linux 上,默认堆栈大小限制为 1-8 MiB。
-
通过了解这个,您希望解决什么问题?
-
@Passerby “帽子”符号也用于求幂。虽然我很困惑。所以它真的是“*”而不是“^”。
-
@KarlKnechtel 是否需要解决问题?寻求更深入的理解是一个令人钦佩的目标。
标签: c memory callstack variable-declaration