c - 如何将 int 添加到 int** ?

标签 c pointers segmentation-fault int

我正在用 C 语言编写代码。

我收到以下变量作为参数int** list

我像这样分配内存:

list = (int **)malloc(sizeof(int) * numberOfItems);

我正在循环另一个列表,我想向 list 变量添加一个整数。这是我的代码:

*list[i] = i;

我收到以下错误:

[1]    18404 segmentation fault  program

我做错了什么?

最佳答案

虽然在 C++ 中是必要的,但在 ANSI C 中没有必要 ( nor suggested ) 强制转换 [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));
}

注意:为了感谢 @M.M 的评论,虽然没有必要或通常建议(阅读上面的链接)在 C 中强制转换 malloc 的返回值,但您在原始帖子中提供的示例代码提供了一个很好的说明,其中使用转换聚光灯并立即暴露出错误的可能性。即强制转换:(int **)sizeof 的参数:int 不匹配。

关于c - 如何将 int 添加到 int** ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36392087/

相关文章:

c - GtkScale 小部件

c - 有读写二进制文件格式(PE 和 ELF)的库吗?

c - 指向二维数组的指针

c - 段错误——无法将一个文件的内容写入另一个文件

c++ - sublime text C++ 编译导致段错误

c - 带字符串名称的 B+Tree 结构

c - if 语句检查 c 中的字符

http - golang http包: Request. WithContext方法src代码解释

c - 为什么会出现段错误?

c++ - 将指针传递给链表时出现段错误