0

可能重复:
c malloc 和 calloc 之间的区别

calloc 与带有 memset 的 malloc 相同吗?还是有什么区别

字符 *ptr;
ptr=(char *)calloc(1,100)

  or

字符 *ptr;
ptr=(char *) malloc(100);
memset(ptr,0,100);

4

2 回答 2

2

这是callocgcc定义的:

PTR
calloc (size_t nelem, size_t elsize)
{
  register PTR ptr;

  if (nelem == 0 || elsize == 0)
    nelem = elsize = 1;

  ptr = malloc (nelem * elsize);

  if (ptr) bzero (ptr, nelem * elsize);

  return ptr;
}

http://gcc.gnu.org/viewcvs/trunk/libiberty/calloc.c?view=markup

void
bzero (void *to, size_t count)
{
  memset (to, 0, count);
}
于 2012-11-22T19:22:44.107 回答
1

结果是一样的。

两者都在分配内存,然后将其设置为 0

于 2012-11-22T19:15:52.283 回答