动态分配struct的问题

时间:2013-01-08 23:11:35

标签: dynamic struct dynamic-allocation

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

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_T之后我会使用另一个返回IMAGE_T *的函数,该函数本身包含函数alloc_image,以便分配记忆。这有什么不对吗?)

由于

1 个答案:

答案 0 :(得分:0)

我怀疑您获得访问冲突的原因是因为您正在尝试使用calloc()在分配内存时将为null的“data”成员。

那就是说,我想理解为什么IMAGE_T中的“数据”成员是一个未签名的char **?为什么不简单地使用unsigned char *? (然后,alloc_image必须将内存分配给IMAGE_T,然后在该分配的结构中为“数据”分配空间。)