calloc零输出字节后是否进行重新分配?

问题描述 投票:1回答:1

我一直在读“ 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?
}

我已经对其进行了测试,并且似乎已将其清零-但我不确定是否总是这样?

c memory allocation realloc calloc
1个回答
1
投票

否,realloc不会将新字节清零。它在realloc manual中这样说:

realloc()函数将ptr指向的内存块的大小更改为大小字节。从区域开始到新旧大小的最小值之间的内容将保持不变。如果新大小大于旧大小,则添加的内存将不会初始化

© www.soinside.com 2019 - 2024. All rights reserved.