繁体   English   中英

c malloc指向结构数组的指针

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM