可能重复:
c malloc 和 calloc 之间的区别
calloc 与带有 memset 的 malloc 相同吗?还是有什么区别
字符 *ptr;
ptr=(char *)calloc(1,100)
or
字符 *ptr;
ptr=(char *) malloc(100);
memset(ptr,0,100);
可能重复:
c malloc 和 calloc 之间的区别
calloc 与带有 memset 的 malloc 相同吗?还是有什么区别
字符 *ptr;
ptr=(char *)calloc(1,100)
or
字符 *ptr;
ptr=(char *) malloc(100);
memset(ptr,0,100);
这是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