小编Sno*_*wtr的帖子

C中矩阵的内存分配

为什么以下代码导致分段错误?(我正在尝试创建两个相同大小的矩阵,一个使用静态,另一个使用动态分配)

#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)

c pointers memory-management

8
推荐指数
2
解决办法
2560
查看次数

标签 统计

c ×1

memory-management ×1

pointers ×1