繁体   English   中英

当我将缓冲区重新分配为较小时,是否会删除缓冲区中的数据,直到达到正确的大小?

[英]When I realloc a buffer to be smaller, does it delete the data in the buffer until it reach the correct size?

我的问题有点令人困惑,但我要问的是,当最小化缓冲区时, realloc对剩余数据做了什么? 例如,我只想说我有一个填充50字节的缓冲区(假设我的缓冲区最多可以容纳50个字节的数据)。 稍后在我的代码中,我使用realloc调整缓冲区大小,现在只能容纳30个字节。 realloc对剩下的超过20个字节做了什么?

realloc正好是malloc + memcpy + free ,除了有时它设法就地执行它返回的指针在数值上等于你输入的指针(但你永远不能依赖它)。 剩下的20个字节被释放。

从C标准, 7.22.3.5 realloc函数

realloc函数释放ptr指向的旧对象,并返回指向具有size指定size的新对象的指针。 新对象的内容应与解除分配之前的旧对象的内容相同,直到新旧大小中的较小者为止。 新对象中超出旧对象大小的任何字节都具有不确定的值。

另见http://en.cppreference.com/w/c/memory/reallochttp://pubs.opengroup.org/onlinepubs/9699919799/functions/realloc.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM