C中的字符串数组内存重新分配

Array of strings memory reallocation in C

我有一个项目要做,我需要为数组重新分配内存。我尝试了很多次,但我发现只有一个版本有效。

void resize(int* size, char*** arr)
{
    *size *= 2;
    *arr = realloc(*arr, sizeof(char*) * *size);
    nulltest(*arr);    // This checks if the allocation was successful
}
resize(&size, &arr);

这个函数可以把数组的容量翻倍,但是我觉得做的太复杂了,所以想请教各位,这个能不能简化一下。我也愿意接受新的解决方案。

  1. int 不是适合大小的类型。使用正确的 size_t
  2. 尽量避免没有特殊需要的副作用(即修改通过引用传递的对象)。
  3. 您的代码可能会泄漏内存。如果 realloc 失败,您将失去对先前分配的内存的引用。 size引用的整数也被无须更改。

我会这样实现:

char **resize(char **arr, size_t newsize)
{
    return realloc(arr, size * sizeof(*arr));
}

并且调用函数应该检查错误。

但是定义这个函数有什么意义呢?这只 return 是 realloc 的 return 值。