c - 这个数组可以用C语言实现吗?还有其他办法吗?

标签 c arrays declaration

我在 C 中声明了一个大小为 150X150X150 的数组。在编译程序以获得相同大小的数组时,编译器没有给出错误或警告。但是当我尝试运行它时,程序停止响应。

void main(){
 int i,j,k;
 char giv[150][150][50],tar[150][150][50];
 for(int i=0;i<150;i++)
 {
  for(j=0;j<150;j++)
  {
   for(k=0;k<50;k++)
    cin>>giv[i][j][k];
  }
 }
}

有什么方法可以创建 150*150*150 的数组而不导致运行时错误? 编辑:我知道多维数组可以工作。这不是编译错误。这是一个运行时错误,其原因是我无法查明。

最佳答案

您刚刚在堆栈上声明了两个数组。

每个数组的大小:150 * 150 * 50 字节,或约 1.1MB。
因此您需要从堆栈中请求 2.2MB。

典型的堆栈大小约为 1 或 2MB。

所以我预计您会收到 StackOverflow 异常。
(有点适合这个网站)

关于c - 这个数组可以用C语言实现吗?还有其他办法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28771178/

相关文章:

c++ - 哪个 c/c++ 库可用于处理 linux 的 wifi 连接?

Python/C "defs"文件 - 它是什么?

具有 CLONE_FILES 泄漏 fcntl 锁的克隆(2)?

c++ - 在以下上下文中,指针和数组之间有什么区别?

c++ - C++ 中的声明符

c - 如何检测子进程是否崩溃?

c++ - 无法让我的数组编号与另一组进行比较

C:嵌套循环和数组的奇怪行为

c++ - 在哪里为 QMainWindow : in header file or in constructor? 声明某些 Qt 对象

declaration - 在 x++ 中声明后真的需要分号吗?