C語(yǔ)言malloc與calloc區(qū)別詳解
區(qū)別
開(kāi)門見(jiàn)山,malloc與calloc在內(nèi)存分配時(shí),前者分配一整塊,后者分配n塊,并且后者在分配時(shí)會(huì)將內(nèi)存置為0,前者不會(huì)內(nèi)存里是垃圾數(shù)據(jù)。
另外它們參數(shù)不同,malloc參數(shù)只有一個(gè)無(wú)符號(hào)整型的num表示分配的字節(jié)數(shù),函數(shù)原型如下
void *malloc(size_t num);
calloc參數(shù)有兩個(gè),分別是無(wú)符號(hào)整型num表示分配的對(duì)象的個(gè)數(shù),以及無(wú)符號(hào)整型size表示每個(gè)對(duì)象的大小
void *calloc(size_t num, size_t size);
用法
它們?cè)谟梅ㄉ舷嗨?,可以起到相同的效果,并且都返回?nèi)存的首地址。
以分配容納5個(gè)int整型的空間為例,代碼如下
malloc用法
#include <stdio.h>
#include <stdlib.h>
int main()
{
?? ?int *p = (int*)malloc(5*sizeof(int));
?? ?for(int i=0; i<5; i++)
?? ??? ?p[i]=i;
?? ?for(int i=0; i<5;i++)
?? ??? ?printf("%d ",p[i]);
?? ?return 0;
}calloc用法
#include <stdio.h>
#include <stdlib.h>
int main()
{
?? ?int *p = (int*)calloc(5,sizeof(int));
?? ?for(int i=0; i<5; i++)
?? ??? ?p[i]=i;
?? ?for(int i=0; i<5; i++)
?? ??? ?printf("%d ",p[i]);
?? ?return 0;
}運(yùn)行結(jié)果
運(yùn)行結(jié)果相同
0 1 2 3 4
到此這篇關(guān)于C語(yǔ)言malloc與calloc區(qū)別詳解的文章就介紹到這了,更多相關(guān)C語(yǔ)言malloc與calloc內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++?sqlite3數(shù)據(jù)庫(kù)配置使用教程
SQLite 是一種嵌入式的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它是一個(gè)開(kāi)源項(xiàng)目,已經(jīng)被廣泛應(yīng)用于各種應(yīng)用程序和操作系統(tǒng)中,這篇文章主要介紹了C++?sqlite3數(shù)據(jù)庫(kù)配置使用,需要的朋友可以參考下2023-08-08
Objective-C中常用的結(jié)構(gòu)體NSRange,NSPoint,NSSize(CGSize),NSRect實(shí)例分析
這篇文章主要介紹了Objective-C中常用的結(jié)構(gòu)體NSRange,NSPoint,NSSize(CGSize),NSRect實(shí)例分析,有助于更加直觀的理解Object-C常用的結(jié)構(gòu)體,需要的朋友可以參考下2014-07-07
C++面向?qū)ο髮?shí)現(xiàn)萬(wàn)年歷的示例代碼
本文將通過(guò)面向?qū)ο髮?shí)現(xiàn)一個(gè)簡(jiǎn)單的日歷(萬(wàn)年歷)效果,主要會(huì)有以下幾個(gè)模塊:模型、視圖、控制,感興趣的小伙伴可以動(dòng)手嘗試一下2022-06-06
快速掌握VC6.0中各種宏注釋?xiě)?yīng)用(附圖)
為了方便別人或自己閱讀自己的程序,注釋是堅(jiān)決不可少的,一個(gè)漂亮的程序,不是在于你應(yīng)用的技術(shù)多么高深,而是能夠把高深的技術(shù)描述的清楚易懂2013-01-01
C++讀寫(xiě)ini配置文件實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了C++讀寫(xiě)ini配置文件實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07

