calloc

calloc

C語言ISOC函數名
calloc是一個ISOC函數函數名。在内存的動态存儲區中分配n個長度為size的連續空間,函數返回一個指向分配起始地址的指針;如果分配不成功,返回NULL。
    中文名:calloc 外文名:clear allocation 适用領域: 所屬學科: 函數原型:void*calloc 功能:動态存儲中分配n為size連續空間 頭文件:stdlib.h或malloc.h 相關函數:malloc、realloc、free_alloca 領域:編程

性質

一般使用後要使用free(起始地址指針)對内存進行釋放,不然内存申請過多會影響計算機的性能,以至于得重啟電腦。如果使用過後不清零,還可以使用指針對該塊内存進行訪問。

與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,此時申請的内存值是不确定的。

calloc()在動态分配完内存後,自動初始化該内存空間為零,而malloc()不初始化,裡邊數據是未知的垃圾數據。

(2)calloc函數,其原型void*calloc(size_t n, size_t size);

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

3)realloc函數和上面兩個有本質的區别,其原型void realloc(void *ptr,size_t new_Size)

用于對動态内存進行擴容(及已申請的動态空間不夠使用,需要進行空間擴容操作),ptr為指向原來空間基址的指針,new_size為接下來需要擴充容量的大小。

相關詞條

相關搜索

其它詞條