0

重複の可能性:
malloc と calloc の c の違い

calloc は memset の malloc と同じですか?? それとも何か違いがありますか

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

  or

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

4

2 に答える 2

2

これはcalloc、gcc で定義されている方法です。

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 に答える