无法弄清楚为什么程序在 C 中崩溃

标签 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];  
}

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

最佳答案

这里的grid heightpowerauto variable 并且要存入stack.
在任何操作系统中,每个进程都有一些固定的默认大小堆栈。

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

你有两个选择

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

在带有 gcc 的 Linux 上你可以增加它

–stack 16777216 

在 gcc 命令中添加这个

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

关于无法弄清楚为什么程序在 C 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9347153/

相关文章:

javascript - 在 javascript/Angular 中创建播放列表(按值复制数组,但按引用设置嵌套对象)

c - C 中的双数组打印输出给了我奇怪的输出

c - 如何在C中对数字数组进行排序

arrays - 来自带有 URL 的数组的 UIImage

c++ - 如何使用 C++、Visual Studio 2017 安装/配置 OpenCV3.2.0?

VS 中的 HTML 换行符格式不起作用?

c# - Windows Form App 和 Windows Form App (.Net Framework) 有什么区别?

创建一个用 C 语言执行多个命令的程序

c - 如何从c中的输出中删除最后一个字符

php - 将 php 字符串拆分为不同长度的 block