当行未知时网格的 C 动态分配

标签 c dynamic allocation

我正在尝试在 C 中分配一个 char* 数组。 我提前知道列数,但不知道行数 我想在需要时分配行。

我尝试使用:

char *(*data)[NUMCOLS]; //declare data as pointer to array NUMCOLS of pointer to char

data = malloc(sizeof(char*));

现在,上面的行应该分配给 data[0] ...正确吗? 那么,我必须能够使用像

这样的行
data[0][1] = strdup("test");
 .
 ..
data[0][NUMCOLS-1] = strdup("temp");

我遇到段错误。我无法理解这里出了什么问题。 谁能帮忙。

最佳答案

您没有为要存储的内容分配足够的内存。在这种特殊情况下,这将是:

data=malloc(sizeof(char*)*NUMCOLS*NUMROWS);

要调整数组大小,您可以使用:

data=realloc(data,(size_t)sizeof(char*)*NUMCOLS*NEW_NUMROWS);

更多相关信息(重新分配)here

关于当行未知时网格的 C 动态分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1548875/

相关文章:

mysql - 动态行未使用 Laravel Controller 保存在数据库中

c# - 我可以在 XAML 中实现 ScrollToHorizo​​ntalOffset() 功能吗? (对于动态列表)

c - 动态数组是在没有 malloc 的情况下分配的

c - 如何删除C语言链表中的最后一个元素?

c - Turbo C 在执行 C 冒泡排序程序时挂起

c++ - 从 void* 到 void(*)(void*)[-fpermissive] 的无效转换

asp.net - 动态添加控件到面板 - 布局问题

c - 汇编语言中的内存地址是一次性静态分配的吗?

C - 使用 strncpy() 函数后的随机字符

c - fwrite() 返回值与文件大小不匹配