Malloc或Calloc以及何时

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

calloc与memoc和memset相同吗? 或者有什么区别

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

  or

char * ptr;
ptr =(char *)malloc(100);
memset的(PTR,0100);


这就是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);
}

结果,它是一样的。

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

链接地址: http://www.djcxy.com/p/28455.html

上一篇: Malloc or Calloc and when

下一篇: What's the difference between calloc & malloc followed by a memset?