【发布时间】:2015-05-07 17:27:42
【问题描述】:
我正在尝试创建一个指向结构体array 的指针,并将其传递给function,在那里我将更改结构体的值。
有人可以解释一下为什么我的代码似乎没有为array 正确分配内存,因为如果我存储both,编译版本的执行失败27pixels integer struct 中的变量,而如果我只存储 一个 integer 变量,它适用于 27 像素?
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(&pm);====>change_pixel(pm);并尽可能地提高编译器警告。您应该已收到不兼容类型的通知。 -
也许
change_pixel应该重命名为set_pixel,因为malloc分配的内存是未初始化的。
标签: c arrays pointers memory-management struct