当前位置 : 主页 > 编程语言 > c++ >

为什么我在C中声明堆栈中的大型数组会出现段错误?

来源:互联网 收集:自由互联 发布时间:2021-06-23
我从这行代码中得到了一个段错误: int fatblob[1820][286][5]; 这是为什么? 你试图分配1820 * 285 * 5 * sizeof(int)bytes =大约10MB(如果sizeof(int)== 4).这可能比你的操作系统默认提供的堆栈分配更多
我从这行代码中得到了一个段错误:

int fatblob[1820][286][5];

这是为什么?

你试图分配1820 * 285 * 5 * sizeof(int)bytes =大约10MB(如果sizeof(int)== 4).这可能比你的操作系统默认提供的堆栈分配更多的字节,所以你得到一个堆栈溢出/段错误.

您可以通过在创建线程时请求额外堆栈,在堆上分配或更改操作系统默认值来解决此问题.

网友评论