realloc如何知道要复制多少?

ype*_*per 12 c realloc

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

 void *realloc(void *ptr, size_t size);
Run Code Online (Sandbox Code Playgroud)

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

 temp = malloc(size);
 memcpy(.. // How much to copy?
 free(ptr);
 return temp;
Run Code Online (Sandbox Code Playgroud)

我意识到这不是最初的实现,并且realloc并不总是免费,但是当它发生时,它复制了多少?

编辑:谢谢你的回答.但是,如何在我的代码中使用malloc/free/..实现realloc?

Dav*_*vid 19

它知道因为malloc你在调用时记录了这些信息.毕竟,系统必须始终跟踪已分配块的大小,以便它不会两次分配特定的内存区域.

如果你的意思是"它怎么知道我到目前为止写了多少阵列",它不需要.它也可以复制任何未初始化的垃圾.