为什么以下代码导致分段错误?(我正在尝试创建两个相同大小的矩阵,一个使用静态,另一个使用动态分配)
#include <stdio.h>
#include <stdlib.h>
//Segmentation fault!
int main(){
#define X 5000
#define Y 6000
int i;
int a[X][Y];
int** b = (int**) malloc(sizeof(int*) * X);
for(i=0; i<X; i++){
b[i] = malloc (sizeof(int) * Y);
}
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果我注释掉其中一个矩阵定义,代码运行正常.像这样:
#include <stdio.h>
#include <stdlib.h>
//No Segmentation fault!
int main(){
#define X 5000
#define Y 6000
int i;
//int a[X][Y];
int** b = (int**) malloc(sizeof(int*) * X);
for(i=0; i<X; i++){
b[i] = malloc (sizeof(int) * Y);
}
}
Run Code Online (Sandbox Code Playgroud)
要么
#include <stdio.h>
#include <stdlib.h> …Run Code Online (Sandbox Code Playgroud)