c - 将内存分配给结构中的数组
问题描述
我已经定义了一个结构如下
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。这只是我从结构中删除的一个数字(使结构看起来更简单)
解决方案
您没有显示太多代码,但至于您关于这段代码的问题,
invariant->numberOfConstPi = (int *)calloc(invariant->numberOfUniqueKernels, sizeof(int));
invariant->numberOfConstPi[countKernel] = numberOfConstPi;
这是正确的方法吗?
我可以说,这是一种有效的方法。但是您没有显示太多代码,并且说您遇到了段错误。我猜你可能没有为指向结构的指针分配内存?
你应该有类似的东西,
Invariant *invariant = malloc(sizeof*invariant);
推荐阅读
- ios - 无法创建 .plist 文件
- python - 如何使用字符串和整数的组合删除列?
- tcp - TCP recv 实际上做了什么?
- javascript - 是否可以简化以下 Javascript 代码但保持相同的功能
- javascript - Fullcalendar 不使用 Webpack Encore 加载视图插件
- python - 本地存储库中的 ModuleNotFoundError
- python - 将图层导出到 sde
- c++ - 为什么ios::trunc文件访问模式在我想打开文件时在ifstream类中不起作用?
- javascript - 如何在 JSON 中获取第二个密钥
- c# - UWP - MVVM - 计算的属性值更改时未更新值