c malloc 指向结构数组的指针
c malloc pointer to an array of struct
我正在尝试创建一个指向 array
结构的指针并将其传递给 function
,我将在其中更改结构的值。
有人能解释一下为什么我的代码似乎没有为 array
正确分配内存,因为如果我存储 27pixels 编译版本的执行失败 both integer
变量在 struct
而它适用于 27pixels 如果我只存储 one integer
变量?
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));
我正在尝试创建一个指向 array
结构的指针并将其传递给 function
,我将在其中更改结构的值。
有人能解释一下为什么我的代码似乎没有为 array
正确分配内存,因为如果我存储 27pixels 编译版本的执行失败 both integer
变量在 struct
而它适用于 27pixels 如果我只存储 one integer
变量?
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));