我一直在读“ How to realloc some memory allocated using calloc?”。现在,我想知道如果块较大,realloc
后跟calloc
是否会将新字节清零。
傻的例子:
#include <stdlib.h>
#include <string.h>
int test() {
char *mem;
mem = calloc(100, 1);
mem = realloc(mem, 120);
memset(mem + 100, 0, 20); // is this even necessary?
}
我已经对其进行了测试,并且似乎已将其清零-但我不确定是否总是这样?
否,realloc
不会将新字节清零。它在realloc manual中这样说:
realloc()函数将ptr指向的内存块的大小更改为大小字节。从区域开始到新旧大小的最小值之间的内容将保持不变。如果新大小大于旧大小,则添加的内存将不会初始化。