C:由Malloc创建的Realloc二维数组

时间:2016-03-19 21:14:09

标签: c arrays

我有一个二维int数组分配如下:

int **matrix = (int**)malloc(x * sizeof(int));
for (i = 0; i < x; i++)
    matrix[i] = (int*)malloc(y * sizeof(int));

如果我通过以下代码realloc执行此数组

int **matrix = (int**)realloc(matrix, x * sizeof(int));
for (i = 0; i < x; i++)
    matrix[i] = (int*)malloc((y) * sizeof(int));

数组的第二维会有剩余的“尾巴”吗?我应该在重新分配之前使用free()函数,否则它们会自行消失?

2 个答案:

答案 0 :(得分:1)

您将matrix完全丢失数据,因此这不是realloc任何事情;你也可以{(1}}和free顶级数组,获得更好的性能。此外,您的代码会泄漏内存,因为第二级分配不是malloc d。

答案 1 :(得分:1)

以下是如何在保持当前值完整的同时调整2D矩阵的大小,将新分配的单元格初始化为0并释放任何剩余剩余部分:

null