2016-09-04 6 views
1

이중 포인터에 대해 메모리를 올바르게 할당하는 방법에 대해 약간 혼란스러워지고 있습니다.세그먼트 결함, C에서 이중 포인터로 지정

내 코드가 두 번째로 첫 번째 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 실패) : 당신이

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

같은 라인이 필요한 것처럼

void init_rgb(BMP *bmp, UINT w, UINT h, UCHAR **r, UCHAR **g, UCHAR **b) { 
     printf("%ld, %ld\n", w, h); 
     UINT x, y; 
     for (y = 0; y < h; y++) { 
      r[y] = (UCHAR *)malloc(sizeof(UCHAR) * w); 
      for (x = 0; x < w; x++) { 
       BMP_GetPixelRGB(bmp, x, y, &r[y][x], &g[y][x], &b[y][x]); 
       printf("FAILING After First Iteration\n"); 
      } 
     } 
    } 

답변

2

가 보이는 gb에 대해서도 마찬가지입니다. 그렇게하지 않으면 g[y]b[y]은 정의되지 않습니다. 참조 할 때 코드가 실패 할 수 있습니다.

관련 문제