【发布时间】:2019-08-22 14:59:42
【问题描述】:
我已经定义了一个结构如下
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 变量 numerOfUniqueKernels。这只是我从结构中删除的一个数字(使结构看起来更简单)
【问题讨论】:
-
您没有显示足够的代码来真正了解。另外,您需要检查
calloc的返回值,以确保它不是NULL。另外,don't cast the return value of the allocation functions. -
它是编译器的一部分,因此有很多代码
标签: c arrays memory-management