calloc在动态分配完内存后,自动初始化该内存空间为零,内存空间为0是什么意思?

2024-12-01 15:16:14
推荐回答(1个)
回答1:

内存空间为零的意思是,calloc所分配的这块内存,其内容全部填为零.
我们来谈谈另外一个函数,malloc,这个函数在分配差运肆完内存后,所分配虚轿的内存地址里面是有内容的,这些内容是上一次分配使用的内容,是一些垃圾内容,操作系统为了效率,不会自动把这些内容清空(清空也就是把内容全部填为零),而由程序员根据需要自己把其清空.
calloc 等效于 malloc + memset.
没有calloc的情况下,程序员如果想要一块干净的内存,必须先用malloc取得一悄销块内存,然后用memset把内容清空.
有了calloc后,程序员只需要调用calloc就可以得到一块干净的内存,不需要再调用memset把内容清空了.

那既然有了calloc,为何还需要malloc呢? 那是因为很多时候程序员并不需要一块干净的内存,这个时候调用malloc的效率就会比calloc高.