我的问题有点令人困惑,但我问的问题是realloc
在最小化缓冲区时对剩余数据做了什么?例如,我只想说我有一个填充50字节的缓冲区(假设我的缓冲区最多可以容纳50个字节的数据)。稍后在我的代码中,我使用realloc
调整缓冲区大小,现在只能容纳30个字节。 realloc
左边超过20个字节做什么?
答案 0 :(得分:7)
realloc
正好是malloc
+ memcpy
+ free
,但有时它会设法就地执行它返回的指针在数值上等于指针你投入(但你永远不能依赖它)。剩下的20个字节被释放。
从C标准,7.22.3.5
realloc函数
realloc
函数释放ptr
指向的旧对象,并返回指向size
指定大小的新对象的指针。新对象的内容应与解除分配之前的旧对象的内容相同,直到新旧大小中的较小者为止。新对象中超出旧对象大小的任何字节都有不确定的值。
另请参阅http://en.cppreference.com/w/c/memory/realloc或http://pubs.opengroup.org/onlinepubs/9699919799/functions/realloc.html