我试图创建一个指向结构array的指针,并将其传递给function,在这里我将更改结构的值。
有人能解释一下为什么我的代码似乎没有为array正确分配内存,因为如果我在integer中存储两个struct变量,那么编译版本的执行将失败27像素,而如果我只存储一个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传递了指针的地址,但它需要指针本身。应该是:

change_pixel(pm);

我很惊讶编译器没有警告您参数类型不正确。参数声明为Pixelmap*,但您传递了Pixelmap**

关于c - c malloc指向结构数组的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30107938/

10-11 16:08