无法弄清楚程序在C中崩溃的原因

时间:2012-02-19 06:03:15

标签: c arrays visual-studio 2d crash

我有这段代码:

#include <stdio.h>
#include <math.h>

#define gridSize    400
void main() {
    float grid[gridSize][gridSize];
    short height[gridSize][gridSize];
    short power[gridSize][gridSize];    
}

我正在使用visual studio 2010,当我运行它时程序似乎会立即崩溃。但是这段代码:

#include <stdio.h>
#include <math.h>

#define gridSize    400
void main() {
    float grid[gridSize][gridSize];
    short height[gridSize][gridSize];
    //short power[gridSize][gridSize];  
}

似乎工作正常,程序不会崩溃。可能是什么问题?

3 个答案:

答案 0 :(得分:3)

此处grid heightpowerauto variable,并将存储在stack
在任何Os中,每个进程都有一些固定的默认大小堆栈。

这里你在堆栈上分配了太多数据,因此进程没有其他内存留在堆栈上进行其他操作。所以它崩溃了

你有两个选择

<强> 1&GT;增加此流程的堆栈大小

在使用gcc的Linux上,您可以通过

增加它
–stack 16777216 

在gcc命令中添加此内容

<强> 2 - ;您可以使用malloc将此数据存储在堆部分。

答案 1 :(得分:2)

你分配的筹码太多了。将一个或多个移动到堆中。

答案 2 :(得分:0)

只需阅读本网站的名称,堆栈溢出。 您可以: 1,将这三个数组移出main函数(如果初始化这些数组,可能会在编译后得到一个大的.exe)。     要么 2,使用malloc()。