[英]c malloc pointer to an array of struct
我试图创建一个指向结构array
的指针,并将其传递给一个function
,在该function
中我将更改结构的值。
有人可以解释一下为什么为什么我的代码似乎没有正确地为array
分配内存,因为如果我将两个 integer
变量都存储在struct
,则编译版本的执行对于27pixels失败,而如果我仅存储一个 integer
变量,它将对27pixels有效?
typedef struct Pixel
{
int label;
int area;
}Pixelmap;
int change_pixel(Pixelmap* pixelmap)
{
for (x = 0; x < dimx*dimy*dimz; x++)
{
pixelmap[x].label = x; /* or malloc and strcpy */
pixelmap[x].area = 1;
printf("%i\n",pixelmap[x].label);
}
return 1;
}
int main()
{
Pixelmap *pm;
pm = malloc(dimx*dimy*dimz * sizeof (struct Pixel));
change_pixel(&pm);
printf("End!\n");
free(pm);
return 0;
}
您将指针的地址传递给change_pixel
,但是期望指针本身。 它应该是:
change_pixel(pm);
我很惊讶您没有从编译器收到有关参数类型错误的警告。 该参数声明为Pixelmap*
,但是您传递了Pixelmap**
。
不确定是否是错字,但您分配了
sizeof(struct Pixel)
它应该是
sizeof(struct Pixelmap)
如
pm = malloc(dimx*dimy*dimz * sizeof (struct Pixelmap));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.