C语言malloc和calloc的区别
是否對(duì)申請(qǐng)的區(qū)域進(jìn)行初始化而已
但是我想你也知道我們寫程序的時(shí)候多用malloc而很少用calloc,何解?
因?yàn)閏alloc雖然對(duì)內(nèi)存進(jìn)行了初始化(全部初始化為0),但是同樣也要降低效率的
calloc相當(dāng)于
p = malloc();
memset(p, 0,size);
多了對(duì)內(nèi)存的寫零操作,而寫零這個(gè)操作我們有時(shí)候需要,而大部分時(shí)間不需要
所以就有兩個(gè)函數(shù)并存的關(guān)系了
(1)函數(shù)malloc不能初始化所分配的內(nèi)存空間
(2)函數(shù)calloc() 會(huì)將所分配的內(nèi)存空間中的每一位都初始化為零
(3)realloc可以對(duì)給定的指針?biāo)傅目臻g進(jìn)行擴(kuò)大或者縮小,無論是擴(kuò)張或是縮小,原有內(nèi)存的中內(nèi)容將保持不變.當(dāng)然,對(duì)于縮小,則被縮小的那一部分的內(nèi)容會(huì)丟失.realloc并不保證調(diào)整后的內(nèi)存空間和原來的內(nèi)存空間保持同一內(nèi)存地址.相反,realloc返回的指針很可能指向一個(gè)新的地址.
總結(jié)
以上是生活随笔為你收集整理的C语言malloc和calloc的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 男人不孕不育症好治疗吗
- 下一篇: 找好男人嫁了吧剧情介绍