我有一个动态分配的二维数据结构,容量为 25 个字符串,每个字符串的长度最多为 50。如何增加 t 的最后一行(指向数组的指针数组),以便它有空间长度为 200 而不是 50 的字符串?我希望它也保留字符串的内容。
这就是我动态分配二维数组结构 t 的方式:
char **t;
t = (char **) malloc (25 * sizeof(char));
for (int i = 0; i < 25; i++)
t[i] = (char *)malloc(50 * sizeof(char));
我可以使用t[24]
访问最后一行吗?实际上如何将字符串的长度更改为 200 而不是 50?
到目前为止,我已经尝试过 t[24] = (char *)malloc(200 * sizeof(char));
但我不确定这是否正确。
最佳答案
使用realloc()
更改现有分配的大小。如果您像以前那样使用 malloc()
,您将丢失数组的原始内容,并且还会丢失指向它的指针,因此您无法释放内存。
char *temp = realloc(t[24], 200 * sizeof(char));
if (temp) {
t[24] = temp;
}
关于c - 增加在数组指针数组中实现的数组的最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56944400/