我有这段代码:
#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];
}
似乎工作正常,程序不会崩溃。可能是什么问题?
答案 0 :(得分:3)
此处grid
height
和power
为auto variable
,并将存储在stack
。
在任何Os中,每个进程都有一些固定的默认大小堆栈。
这里你在堆栈上分配了太多数据,因此进程没有其他内存留在堆栈上进行其他操作。所以它崩溃了
你有两个选择
<强> 1&GT;增加此流程的堆栈大小
在使用gcc的Linux上,您可以通过
增加它–stack 16777216
在gcc命令中添加此内容
<强> 2 - ;您可以使用malloc将此数据存储在堆部分。
答案 1 :(得分:2)
你分配的筹码太多了。将一个或多个移动到堆中。
答案 2 :(得分:0)
只需阅读本网站的名称,堆栈溢出。 您可以: 1,将这三个数组移出main函数(如果初始化这些数组,可能会在编译后得到一个大的.exe)。 要么 2,使用malloc()。