c - 增加在数组指针数组中实现的数组的最后一行?

标签 c arrays pointers multidimensional-array dynamic-memory-allocation

我有一个动态分配的二维数据结构,容量为 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/

相关文章:

C - 输出终端输入的最长行

c# - 标准偏差计算在 C# 中不起作用?

java - 如何解决 Java 中的 NullPointerException?

c - 如何使用指针在数组中导航?

c++ - C++中有序链表类的插入函数问题

c++ - C 程序可移植性

c - 显示带前导零的十六进制整数

C 游戏未结束

C 使用 strcpy 替换二维字符数组中的字符串问题

C++接受成员和外部函数指针