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));