永发信息网

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

答案:1  悬赏:50  手机版
解决时间 2021-11-24 06:39
  • 提问者网友:聂風
  • 2021-11-23 18:13
calloc在动态分配完内存后,自动初始化该内存空间为零,内存空间为0是什么意思?
最佳答案
  • 五星知识达人网友:玩世
  • 2021-11-23 19:46
内存空间为零的意思是,calloc所分配的这块内存,其内容全部填为零.
我们来谈谈另外一个函数,malloc,这个函数在分配完内存后,所分配的内存地址里面是有内容的,这些内容是上一次分配使用的内容,是一些垃圾内容,操作系统为了效率,不会自动把这些内容清空(清空也就是把内容全部填为零),而由程序员根据需要自己把其清空.
calloc 等效于 malloc + memset.
没有calloc的情况下,程序员如果想要一块干净的内存,必须先用malloc取得一块内存,然后用memset把内容清空.
有了calloc后,程序员只需要调用calloc就可以得到一块干净的内存,不需要再调用memset把内容清空了.

那既然有了calloc,为何还需要malloc呢? 那是因为很多时候程序员并不需要一块干净的内存,这个时候调用malloc的效率就会比calloc高.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯