我定义了一个结构如下

struct Invariant
{
    int *           numberOfConstPi;        //  Saves the number of constant Pi in each kernel


    Invariant *     next;
};

后来我在代码中修改为
invariant->numberOfConstPi = (int *)calloc(invariant->numberOfUniqueKernels, sizeof(int));
invariant->numberOfConstPi[countKernel] = numberOfConstPi;

其中countKernel是迭代器,numberOfConstPi是变量。
这是正确的方法吗?当我运行代码时,我得到的是分段错误。
但是当我把数组定义为
int * hello = (int *)calloc(invariant->numberOfUniqueKernels, sizeof(int));


hello[countKernel] = numberOfConstPi;

它工作得很好。
请忽略int变量numberofuniquekernels。这只是我从结构中删除的一个数字(为了使结构看起来更简单)

最佳答案

你没有显示太多代码,但是关于这段代码的问题,

invariant->numberOfConstPi = (int *)calloc(invariant->numberOfUniqueKernels, sizeof(int));
invariant->numberOfConstPi[countKernel] = numberOfConstPi;

这是正确的方法吗?
我可以说,这是一个有效的方法。
但是你没有显示太多代码,你说你遇到了segfault错误。我猜您可能没有为指向struct的指针分配内存?
你应该吃点什么,
Invariant *invariant = malloc(sizeof*invariant);

10-05 18:34