lmi*_*asf 1 c memory allocation
我正在阅读C中的指针和动态内存分配.我发现该函数calloc()
类似malloc()
但前者将内存初始化为0.
我不明白为什么将内存初始化为零意味着什么?
注意:我不是要求malloc和calloc之间的区别,而是将内存初始化为零的含义.
提前致谢.
Jon*_*art 11
p = calloc(12, 1024);
Run Code Online (Sandbox Code Playgroud)
大致相当于:
p = malloc(12 * 1024);
if (p != NULL)
memset(p, 0, 12 * 1024);
Run Code Online (Sandbox Code Playgroud)
那calloc
两件事情malloc
也没有:
nmemb
和size
变量相乘以计算分配的总大小为此,calloc
有利于分配数组,特定的标量值数组.
有些情况下,这种初始化是不合需要的:
NULL
可能不是全零.