日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

calloc、malloc、realloc函数的区别及用法

發布時間:2025/6/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 calloc、malloc、realloc函数的区别及用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? ? ? ? calloc、malloc、realloc函數的區別及用法!

三者都是分配內存,都是stdlib.h庫里的函數,但是也存在一些差異。

(1)malloc函數。其原型void *malloc(unsigned int num_bytes);
num_byte為要申請的空間大小,需要我們手動的去計算,如int *p = (int *)malloc(20*sizeof(int)),如果編譯器默認int為4字節存儲的話,那么計算結果是80Byte,一次申請一個80Byte的連續空間,并將空間基地址強制轉換為int類型,賦值給指針p,此時申請的內存值是不確定的。

(2)calloc函數,其原型void *calloc(size_t n, size_t size);
其比malloc函數多一個參數,并不需要人為的計算空間的大小,比如如果他要申請20個int類型空間,會int *p = (int *)calloc(20, sizeof(int)),這樣就省去了人為空間計算的麻煩。但這并不是他們之間最重要的區別,malloc申請后空間的值是隨機的,并沒有進行初始化,而calloc卻在申請后,對空間逐一進行初始化,并設置值為0;

實例:

?? ?int *p = (int *)malloc(20*sizeof(int));int *pp = (int *)calloc(20, sizeof(int));int i;printf("malloc申請的空間值:\n\n");for ( i=0 ; i < 20; i++){printf("%d ", *p++);}printf("\n\n");printf("calloc申請的空間的值:\n\n");for ( i=0 ; i < 20; i++){printf("%d ", *pp++);}printf("\n");

結果:

很多人會疑問:既然calloc不需要計算空間并且可以直接初始化內存避免錯誤,那為什么不直接使用calloc函數,那要malloc要什么用呢?
實際上,任何事物都有兩面性,有好的一面,必然存在不好的地方。這就是效率。calloc函數由于給每一個空間都要初始化值,那必然效率較malloc要低,并且現實世界,很多情況的空間申請是不需要初始值的,這也就是為什么許多初學者更多的接觸malloc函數的原因。

(3)realloc函數和上面兩個有本質的區別,其原型void realloc(void *ptr, size_t new_Size)
用于對動態內存進行擴容(及已申請的動態空間不夠使用,需要進行空間擴容操作),ptr為指向原來空間基址的指針, new_size為接下來需要擴充容量的大小。
實例:

int main(void) {const int size = 2000;int *p = (int *)malloc(20*sizeof(int));int *pp = (int *)realloc(p, size*sizeof(int));printf("原來的p_Address:%x ? 擴容后的pp_Address:%x \n\n", p, pp);return 0; }


結果:

可從圖看出,擴容后地址和原先地址是不一樣的,但是這僅僅取決于擴容的內存大小。

實際上:

如果size較小,原來申請的動態內存后面還有空余內存,系統將直接在原內存空間后面擴容,并返回原動態空間基地址;如果size較大,原來申請的空間后面沒有足夠大的空間擴容,系統將重新申請一塊(20+size)*sizeof(int)的內存,并把原來空間的內容拷貝過去,原來空間free;如果size非常大,系統內存申請失敗,返回NULL,原來的內存不會釋放。注意:如果擴容后的內存空間較原空間小,將會出現數據丟失,如果直接realloc(p, 0);相當于free(p).

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的calloc、malloc、realloc函数的区别及用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av国产一区 | av图区 | 无码人妻精品一区二区三区在线 | 少妇av导航 | 天天草天天射 | 日本在线不卡一区 | 国产思思 | 美女张开腿流出白浆 | 三级视频网站 | 欧美中文字幕一区二区三区 | 日本黄色www | 日韩在线资源 | 污的网站 | 久久国产影院 | 91美女在线观看 | 成人一级影视 | 色综合中文综合网 | 欧美极品少妇 | 久久这里只有精品久久 | 天天射av | 国产欧美亚洲一区二区 | 播播成人网| 长篇高h肉爽文丝袜 | 中国免费看的片 | 国产精品亚洲欧美在线播放 | 黄色小视频在线免费看 | 黄色大片免费的 | 99精品视频99 | 中文字幕+乱码+中文 | 丁香av | 国产丝袜一区二区三区 | 久久久久玖玖 | 日本二区在线观看 | 艳情五月 | 亚洲系列中文字幕 | 欧美精品一区二区三区久久久竹菊 | 少妇一级淫片免费放2 | www.69视频| 亚洲成人精选 | 丨国产丨调教丨91丨 | 成人性生交大全免 | 欧美巨乳美女 | 国产精品丝袜视频无码一区69 | 欧美一区二区三区日韩 | 蜜桃成人免费视频 | 欧洲亚洲激情 | 欧美交换国产一区内射 | 黑人玩弄人妻一区二区三区免费看 | 中文字幕亚洲第一 | 超碰最新在线 | 亚洲成人午夜在线 | 少妇激情四射 | 日本视频免费观看 | 亚洲中文字幕视频一区 | 午夜成人影视 | 少妇性高潮视频 | 日韩精品一区二区三区在线播放 | 亚洲成av人片在www色猫咪 | 91小仙女jk白丝袜呻吟 | 日韩怡红院 | 97精品国产 | 国产喷潮 | 午夜激情在线观看 | 中文字幕av在线免费观看 | 女同性恋一区二区三区 | 真人真事免费毛片 | 色四月婷婷 | 日韩免费观看 | 超碰成人免费 | 欧美在线播放一区二区 | 免费特级黄毛片 | 天天爽夜夜爽视频 | 欧美综合网站 | 五月天堂网 | 99在线精品视频免费观看20 | 免费观看久久 | 伊人网站在线观看 | 欧美性大战久久久 | 亚洲一二三区在线观看 | 凹凸日日摸日日碰夜夜 | 麻豆系列 | 在线观看三级网站 | 国产精品久久久久一区二区三区 | 福利社午夜 | 婷婷久| 色干网 | 蕾丝视频污 | 午夜精品小视频 | 另类小说一区二区 | 精品一卡二卡三卡 | 中文字幕一区二区三区人妻 | 暖暖日本在线 | 无码人妻精品一区二区三区99不卡 | 欧美色图国产精品 | 俄罗斯女人裸体性做爰 | av国产一区 | 无码人妻精品一区二区50 | 国产精品久久久久久一区二区 | 色老头一区二区三区在线观看 |