使用realloc获得的扩展内存包含哪些内容?

时间:2018-10-01 12:17:07

标签: c realloc

当我使用realloc来调整先前使用calloc进行初始化的内存(数组)的大小时,整个缓冲区中的内存仍为0吗?还是新零件未初始化?

2 个答案:

答案 0 :(得分:6)

考虑到您要增加分配的内存的大小,扩展内存区域将具有不确定的值。

引用C11,第7.22.3.5章,(强调我的

  

[...]新内容   对象应与重新分配之前的旧对象相同,但以较小者为准   新旧尺寸。 新对象中超出旧对象大小的任何字节都具有   不确定的值。

答案 1 :(得分:2)

否,不幸的是,realloc不会初始化分配的“新”部分。所以你必须自己做。不过,“旧”部分将保留其值,因此,如果您不更改该值,则所有0仍将存在。