gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:50:15 24 4
gpt4 key购买 nike

注意:我对内存分配及其工作方式不是 100% 有信心,但我在很大程度上理解它。

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

我能做到以下几点吗?

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

...

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

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

最佳答案

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

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

广告。 1:如果您可以在函数内部重新分配,那么您必须传递双指针或返回对象。

广告。 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;

关于c - 在传递给函数本身的指针上调用 realloc() 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63535667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com