当我使用realloc
来调整先前使用calloc
进行初始化的内存(数组)的大小时,整个缓冲区中的内存仍为0吗?还是新零件未初始化?
答案 0 :(得分:6)
考虑到您要增加分配的内存的大小,扩展内存区域将具有不确定的值。
引用C11
,第7.22.3.5章,(强调我的)
[...]新内容 对象应与重新分配之前的旧对象相同,但以较小者为准 新旧尺寸。 新对象中超出旧对象大小的任何字节都具有 不确定的值。
答案 1 :(得分:2)
否,不幸的是,realloc
不会初始化分配的“新”部分。所以你必须自己做。不过,“旧”部分将保留其值,因此,如果您不更改该值,则所有0
仍将存在。