c - 为什么在我的程序开始时删除 static 会出现 ' Stack overflow' 错误?

标签 c static struct stack-overflow

我使用 VC2010,当我尝试用 struct 替换 static 调试我的程序时,我得到了

Unhandled exception at 0x000f18e7 in ht_array.exe: 0xC00000FD: Stack overflow.

它在main的第一行执行

#define BUCKETS 64
#define B_ENTRIES 50000

void main(int argc, char **argv)
{
static fpinfo hash_table[BUCKETS][B_ENTRIES];
static tanker_record tr[100];
....

最佳答案

因为 64 * 50000 * sizeof(fpinfo) 字节对于您的堆栈来说显然太大了。使用 static,变量被分配到适合它的不同内存区域。

关于c - 为什么在我的程序开始时删除 static 会出现 ' Stack overflow' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9483805/

上一篇:c - 需要成像细节

下一篇:计算输入。

相关文章:

c - 尝试将精确温度精确到小数点后两位

java - 为什么我们不把所有东西都静态化呢?

c++ - 在静态函数中初始化静态变量导致未解决

c - 分配内存以保存 C 中的结构数组

C 结构体数组默认值

c - DCRaw 说我应该在 gcc 中使用 -O4 进行编译。 -O4存在吗?

c - 如何获取作为输入输入的数字的最小倍数,而不是输入的数字本身?

python - 为什么这段 C 代码通过 Python 的 ctypes 运行时的执行速度是直接运行时的一半?

java - 类静态初始化 block 内的类使用

c++ - 如何使用初始化列表 C++ 初始化数组