gpt4 book ai didi

c - realloc 如何知道要复制多少?

转载 作者:太空狗 更新时间:2023-10-29 16:40:06 26 4
gpt4 key购买 nike

realloc如何知道原始数据的大小?

 void *realloc(void *ptr, size_t size);

所以,如果实现是这样的:

 temp = malloc(size);
memcpy(.. // How much to copy?
free(ptr);
return temp;

我意识到这不是原始实现,并且 realloc 并不总是释放,但是当它释放时,它复制了多少?

编辑:感谢您的回答。但是我怎样才能在我的代码中使用 malloc/free/.. 实现 realloc?

最佳答案

它知道,因为 malloc 在您调用它时记录了该信息。毕竟,系统无论如何都必须跟踪已分配 block 的大小,这样它就不会两次分配特定的内存区域。

如果您的意思是“它如何知道我到目前为止写入了多少数组”,则不需要。它也可以只复制任何未初始化的垃圾。

关于c - realloc 如何知道要复制多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3476448/

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