【发布时间】:2013-02-16 10:05:46
【问题描述】:
如果我将行的值保持为 100000,则程序可以正常工作,但是,如果我将 100 万行设为 1000000,则程序会给我分段错误。是什么原因?我在 Linux 2.6x RHEL 内核上运行。
#include<stdio.h>
#define ROWS 1000000
#define COLS 4
int main(int args, char ** argv)
{
int matrix[ROWS][COLS];
for(int col=0;col<COLS;col++)
for(int row=0;row < ROWS; row++)
matrix[row][col] = row*col;
return 0;
}
【问题讨论】:
-
StackOverflow 上的 Stack Overflow...
-
遗憾的是,没有办法在编译时捕获此类分配失败。尝试使用尽可能小的数组。如果您不确定,那么很可能您没有足够的堆栈空间;-)