我有一个二维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()
函数,否则它们会自行消失?
答案 0 :(得分:1)
您将matrix
完全丢失数据,因此这不是realloc
任何事情;你也可以{(1}}和free
顶级数组,获得更好的性能。此外,您的代码会泄漏内存,因为第二级分配不是malloc
d。
答案 1 :(得分:1)
以下是如何在保持当前值完整的同时调整2D矩阵的大小,将新分配的单元格初始化为0并释放任何剩余剩余部分:
null