0

我正在使用具有IMAGE_T自己的 alloc 函数的结构(如下所示,请原谅法语)。

typedef struct {
    int nbl;        /* nombre de ligne de l'image */
    int nbc;        /* nombre de colonnes de l’image */
    unsigned char **data;   /* tableau bidim des pixels de l’image */
} IMAGE_T;



IMAGE_T *alloc_image(int nbl, int nbc){
    int taille = nbl*nbc+100;
    IMAGE_T * image;
    image = (IMAGE_T *) calloc(taille, sizeof(unsigned char)); 
    return image;
}

当通过调试器时,它错误地指出:“未处理的异常:0xc0000005:访问冲突读取位置0x00000000。” ..我很确定这与 alloc_image 无法正常运行有关。有什么建议么?

(有关更多信息,在声明一个IMAGE_TI 之后,然后使用另一个返回IMAGE_T *的函数,该函数本身包含其中的函数alloc_image,以分配内存。这有什么问题吗?)

谢谢

4

1 回答 1

0

我怀疑您遇到访问冲突的原因是因为您正在尝试使用 calloc() 在分配内存时会将其设为 null 的“数据”成员。

也就是说,我想了解为什么 IMAGE_T 中的“数据”成员是无符号字符 **?为什么不简单地使用 unsigned char *?(然后,alloc_image 必须为 IMAGE_T 分配内存,然后在该分配的结构中为“数据”分配空间。)

于 2013-01-08T23:21:39.437 回答