我有这个代码:

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

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

最佳答案

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

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

你有两个选择

1>增加此过程的堆栈大小

在具有gcc的Linux上,您可以将其增加

–stack 16777216

在gcc命令中添加

2>您可以使用malloc将数据存储在堆部分。

09-27 10:18