在传递给函数本身的指针上调用 realloc() 是否安全?

Is it safe to call realloc() on the pointer you pass into function itself?

注意:我对内存分配及其工作原理不是 100% 有信心,但我大部分都理解它。

当我看到 realloc() 被使用时,我经常看到人们使用新的指针来存储地址 space 而不是使用 same/old 。我想知道是否有必要。

我能做到以下几点吗?

char *string;
string = malloc(5 * sizeof(char));

...

string = realloc(string, 10 * sizeof(char));

更重要的是,这样做安全吗?

(1) 回答你标题的问题:不,不是,因为realloc可以给你一个不同的指针。

(2) 回答你代码的问题:都不是。如果 realloc returns 0,意味着它不能满足你增加大小的请求,你已经失去了 string 的价值,但你的旧 string 还没有被释放(内存泄漏)。

广告。 1:如果你可以在函数内部重新分配,那么你必须传递双指针或 return object.

广告。 2:一个例子是:

char *string, *tmp;
string = malloc(5 * sizeof(char));

...

if ((tmp = realloc(string, 10 * sizeof(char))) == 0) {
    printf("Could not allocate more memory\n);
    return;
}
else
    string= tmp;