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

Fum*_*ing 2 c realloc

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

Cub*_*bbi 7

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

从C标准,7.22.3.5realloc功能

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

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

  • @FumerianGaming虽然我明白了这一点,但没有必要在这里写谢谢.如果你喜欢一个答案只是upvote,如果它是你的问题的解决方案,那么你应该将其标记为正确的答案. (2认同)