gpt4 book ai didi

c - 我的代码中的段错误

转载 作者:行者123 更新时间:2023-11-30 21:23:02 25 4
gpt4 key购买 nike

这段代码给我带来了段错误

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 是我制作的一个结构,段错误发生在 average->pixels[i].R = avg;

我分配错误了吗?

编辑:更新以添加声明

最佳答案

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

这会为average分配空间,但不会为其内部的average->pixels分配空间。两个指针意味着您需要两次分配。

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

关于c - 我的代码中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48859052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com