我定义了一个结构如下
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);