【发布时间】:2023-03-24 19:25:02
【问题描述】:
例如,我有这个 C 代码:
int len = 100;
int i;
// arr is pointer-to-pointer 2d array of char
char **arr = malloc(len * sizeof(char*));
for (i = 0; i < len; i++)
{
// Allocate the sub-pointer
arr[i] = malloc(len * sizeof(char));
...
}
...
// Is this part necessary?
for (i = 0; i < len; i++)
{
// Freeing the sub-pointer
free(arr[i]);
}
// Shrink the arr's size from 100 to 50
char** temp = realloc(arr, 50 * sizeof(char*));
...
在为arr 做realloc 以缩小其大小(从100 到50)之前,是否需要释放arr 的子指针?
for (i = 0; i < len; i++)
{
free(arr[i]);
}
【问题讨论】:
-
您为什么认为它可能是必要的? (画一张图以一种或另一种方式说服自己。)
-
只需阅读
realloc参考:/ -
我正在调用
realloc将大小从 100 缩小到 50,正如您看到的arr是指针到指针。通过将arr缩小到更小的尺寸(50),是否不需要释放来自arr的其他50 个子指针?realloc会处理免费的吗?