既然malloc和calloc都是分配内存,为什么还要区分这两种方式来分配呢?

calloc可以“犁地”
而malloc则只获得
那么基本上用calloc可以无视malloc反而方式了吧? 又安全又方便...
这两个方式都还并存,那么存在就是合理,是不是有一些别的方面的区别的?

呵呵,其实区别就是
是否对申请的区域进行初始化而已
但是我想你也知道我们写程序的时候多用malloc而很少用calloc,和解?
因为calloc虽然对内存进行了初始化(全部初始化为0),但是同样也要降低效率的
calloc相当于
p = malloc();
memset(p, 0,size);
多了对内存的写零操作,而写零这个操作我们有时候需要,而大部分时间不需要
所以就有两个函数并存的关系了
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-14
主要的不同是malloc不初始化分配的内存,calloc初始化已分配的内存为0。
次要的不同是calloc返回的是一个数组,而malloc返回的是一个对象。
calloc等于malloc后在memset很可能calloc内部就是一个malloc再来一个memset清0。
所以malloc比calloc更高效.
第2个回答  2018-04-05

malloc与calloc没有本质区别,malloc之后的未初始化内存可以使用memset进行初始化。




    主要的不同是malloc不初始化分配的内存,calloc初始化已分配的内存为0。

    次要的不同是calloc返回的是一个数组,而malloc返回的是一个对象。

    calloc等于malloc后在memset很可能calloc内部就是一个malloc再来一个memset清0。

    所以malloc比calloc更高效。

    分配内存空间函数malloc 调用形式: (类型说明符*) malloc (size) 。

    分配内存空间函数 calloc calloc 也用于分配内存空间。

本回答被网友采纳
相似回答