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
你在调用时记录了这些信息.毕竟,系统必须始终跟踪已分配块的大小,以便它不会两次分配特定的内存区域.
如果你的意思是"它怎么知道我到目前为止写了多少阵列",它不需要.它也可以复制任何未初始化的垃圾.
归档时间: |
|
查看次数: |
3909 次 |
最近记录: |