为什么删除静态会在程序开始时出现“堆栈溢出”错误?

时间:2012-02-28 14:33:26

标签: c static struct stack-overflow

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

  

ht_array.exe中0x000f18e7处的未处理异常:0xC00000FD:堆栈   溢出。

它在主要的第一行

#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];
....

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

删除static表示hash_table现在是一个堆栈变量,其大小对于堆栈来说太大了。

static个变量存储在其他位置(请参阅此question)。