Malloc或Calloc以及何时使用

8 浏览
0 Comments

Malloc或Calloc以及何时使用

这个问题已经有答案了:

可能是重复的问题:

c difference between malloc and calloc

calloc和使用memset的malloc一样吗?还是有什么区别?

char *ptr;

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

  or

char *ptr;

ptr=(char *) malloc(100);

memset(ptr,0,100);

admin 更改状态以发布 2023年5月24日
0
0 Comments

结果是一样的。

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

0
0 Comments

这是gcc定义calloc的方式:

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