C-我的代码中的细分故障



这个代码块正在给我一个seg故障

image_t* removeNoiseAverage(image_t* img[]) {
    image_t* average = (image_t*) malloc(sizeof(image_t));
    int image_size = img[0]->header.HEIGHT * img[0]->header.WIDTH;
    int i,k;
    double avg = 0;
    for (i=0;i<image_size;i++){
        avg = 0;
        for (k=0;k<10;k++){
            avg += img[k]->pixels[i].R;
        }
        avg = avg/10;
        average->pixels[i].R = avg;
    }
    return 0;
}
typedef struct image {
  header_t header;      // 15 bytes
  pixel_t* pixels;      // 4 bytes
} image_t;
typedef struct pixel {
  uint8_t R, G, B;
} pixel_t;
typedef struct header {
  char MAGIC_NUMBER[3];
  unsigned int HEIGHT, WIDTH, MAX_COLOR;
} header_t;

image_t是一个结构i,分段故障发生在 average->pixels[i].R = avg;

我是否错误地malloc?

编辑:更新以添加声明

image_t* average = (image_t*) malloc(sizeof(image_t));

这为average分配了空间,但没有为average->pixels分配空间。两个指针意味着您需要两个分配。

average->pixels = malloc(image_size * sizeof(pixel_t));

最新更新