![](/img/trans.png)
[英]How Do I Read “int (*functionFactory(int n))(int, int) { … }”?
[英]How do I add int to a int**?
我正在用 C 编码。
我收到以下变量作为参数int** list
。
我像这样分配内存:
list = (int **)malloc(sizeof(int) * numberOfItems);
我正在遍历另一个列表,我想向list
变量添加一个整数。 这是我的代码:
*list[i] = i;
我收到以下错误:
[1] 18404 segmentation fault program
我做错了什么?
尽管在 C++ 中是必需的,但没有必要( 也不建议)在 ANSI C 中[m][c][re]alloc
的返回值。所以你的第一条语句应该是:(注意sizeof
语句的参数...... )
list = malloc(sizeof(* list) * numberOfRows);//create the first level of array of pointers
然后循环遍历,正如您在帖子中指出的那样,为第一个语句中创建的每个位置分配内存:
for(i=0;i<numOfRows;i++)
{
list[i] = malloc(sizeof(int));
}
注意:感谢@MM 的评论,虽然没有必要或通常建议(阅读上面的链接)在 C 中转换 malloc 的返回值,但您在原始帖子中提供的示例代码提供了一个很好的说明,其中使用了投射聚光灯和立即暴露出错误的可能性。 即 cast: (int **)
与sizeof
: int
的参数不匹配。
正如@FiddlingBits 指出的那样,我的分配方法不正确。
这是修复:
int *workList = (int *)malloc(sizeof(int) * hardworkingDwarfCount);
list = &workList;
和 :
workList[i] = i;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.