如何解决在传递给函数本身的指针上调用realloc是否安全?
注意:我对内存分配及其工作方式不是100%充满信心,但是我大部分时间都对此了解。
当我看到realloc()
被使用时,我经常看到人们使用新的指针来存储地址空间,而不是使用相同/旧的指针。我想知道这是否有必要。
我可以执行以下操作吗?
char *string;
string = malloc(5 * sizeof(char));
...
string = realloc(string,10 * sizeof(char));
更重要的是,这样做安全吗?
解决方法
(1)要回答您的标题问题:不,不是,因为realloc
可以为您提供不同的指针。
(2)回答您的代码问题:都不。如果realloc
返回0,表示它无法满足您增加大小的请求,则您丢失了string
的值,但是旧的string
尚未被释放(内存泄漏)。 / p>
广告。 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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。