C 程序因大型数组而崩溃

标签 c arrays gcc

我正在尝试运行涉及大量计算和值的模拟。

我遇到一个问题,即大数组会导致程序在声明任何变量之前崩溃。我不确定这是由于我的代码还是由于我的操作系统拒绝运行该程序。

导致程序崩溃的代码是:

long double adsorption[2][4][5][10001]

这个数组应该使用大约 10^6 字节,而 SIZE_MAX 是 10^19,所以我很困惑为什么它会崩溃。 (任务管理器中的程序是64位)

我运行的是 Windows 7 64 位,内存为 12 Gb,其中 10 Gb 通常是免费的。编译器是MinGW-w64

抱歉,如果这很基础,我来自物理背景,而不是编码!

干杯

最佳答案

吸附正在堆栈上分配,并且它一定会溢出堆栈。因此出现了错误。

使用malloc和系列在上分配大块数据。

编辑

或者使其静态 - @Matt McNabb 谢谢! :-)

关于C 程序因大型数组而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55301022/

相关文章:

gcc - 在 64 位 Linux 上编译 32 位 at&t 汇编程序不起作用

c - 如何使 read() 非阻塞并重置 read()

c++ - 外部链接的 C 库中的异常传播

c - C中return语句中的逻辑运算符

javascript - 如何在 Javascript 中解析 JSON 文件?

macos - 将 Homebrew 与备用 GCC 一起使用

c - C 中的华氏转换公式问题

javascript - 显示列而不是行

java - 替换二维数组中的一行

c++ - 在 C++ 中使用 curl 时 undefined symbol