段错误,在c中分配给双指针

段错误,在c中分配给双指针,c,pointers,malloc,double-pointer,C,Pointers,Malloc,Double Pointer,对于如何为双指针正确分配内存,我感到有点困惑 我的代码第二次尝试在第一个UCHAR指针数组的第二个索引处存储值时会导致段错误 任何协助都将不胜感激 分配我的双指针: width = BMP_GetWidth (bmp); height = BMP_GetHeight (bmp); depth = BMP_GetDepth (bmp); r = (UCHAR **) malloc(sizeof(UCHAR *) * height);

对于如何为双指针正确分配内存,我感到有点困惑

我的代码第二次尝试在第一个UCHAR指针数组的第二个索引处存储值时会导致段错误

任何协助都将不胜感激

分配我的双指针:

        width = BMP_GetWidth (bmp);
        height = BMP_GetHeight (bmp);
        depth = BMP_GetDepth (bmp);

        r = (UCHAR **) malloc(sizeof(UCHAR *) * height);
        g = (UCHAR **) malloc(sizeof(UCHAR *) * height);
        b = (UCHAR **) malloc(sizeof(UCHAR *) * height);

        init_rgb(bmp, width, height, r, g, b);
尝试使用指针(x=1时失败):

void init_rgb(BMP*BMP,UINT w,UINT h,UCHAR**r,UCHAR**g,UCHAR**b){
printf(“%ld,%ld\n”,w,h);
单位x,y;
对于(y=0;y
看起来您需要一行

r[y] = (UCHAR *)malloc(sizeof(UCHAR) * w);
也适用于
g
b
。如果不这样做,
g[y]
b[y]
是未定义的。当您引用这些代码时,您的代码可能会失败

r[y] = (UCHAR *)malloc(sizeof(UCHAR) * w);