我正在使用自己的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
,以便分配记忆。这有什么不对吗?)
由于
答案 0 :(得分:0)
我怀疑您获得访问冲突的原因是因为您正在尝试使用calloc()在分配内存时将为null的“data”成员。
那就是说,我想理解为什么IMAGE_T中的“数据”成员是一个未签名的char **?为什么不简单地使用unsigned char *? (然后,alloc_image必须将内存分配给IMAGE_T,然后在该分配的结构中为“数据”分配空间。)