我正在尝试在 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/