calloc記憶體分配函式

2022-05-29 00:57:12 字數 1133 閱讀 2547

calloc是乙個c語言函式

函式名: calloc   

void *calloc(unsigned n,unsigned size);   

功 能: 在記憶體的動態儲存區中分配n個長度為size的連續空間,函式返回乙個指向分配起始位址的指標;如果分配不成功,返回null。   

跟malloc的區別:   

calloc在動態分配完記憶體後,自動初始化該記憶體空間為零,而malloc不初始化,裡邊資料是隨機的垃圾資料。

c語言函式realloc

函式簡介

原型:extern void *realloc(void *mem_address, unsigned int newsize);   語法:指標名=(資料型別*)realloc(要改變記憶體大小的指標名,新的大小)。//新的大小一定要大於原來的大小不然的話會導致資料丟失!   標頭檔案:#include 有些編譯器需要#include ,在tc2.0中可以使用alloc.h標頭檔案   功能:先按照newsize指定的大小分配空間,將原有資料從頭到尾拷貝到新分配的記憶體區域,而後釋放原來mem_address所指記憶體區域,同時返回新分配的記憶體區域的首位址。即重新分配儲存器塊的位址。   返回值:如果重新分配成功則返回指向被分配記憶體的指標,否則返回空指標null。    注意:這裡原始記憶體中的資料還是保持不變的。當記憶體不再使用時,應使用free()函式將記憶體塊釋放。

realloc使用總結

1. realloc失敗的時候,返回null   

2. realloc失敗的時候,原來的記憶體不改變,不會釋放也不會移動   

3. 假如原來的記憶體後面還有足夠多剩餘記憶體的話,realloc的記憶體=原來的記憶體+剩餘記憶體,realloc還是返回原來記憶體的位址; 假如原來的記憶體後面沒有足夠多剩餘記憶體的話,realloc將申請新的記憶體,然後把原來的記憶體資料拷貝到新記憶體裡,原來的記憶體將被free掉,realloc返回新記憶體的位址   

4. 如果size為0,效果等同於free()。這裡需要注意的是只對指標本身進行釋放,例如對二維指標**a,對a呼叫realloc時只會釋放一維,使用時謹防記憶體洩露。   

5. 傳遞給realloc的指標必須是先前通過malloc(), calloc(), 或realloc()分配的  

6.傳遞給realloc的指標可以為空,等同於malloc。

用calloc 函式分配記憶體

用calloc 函式分配記憶體 calloc函式原型 void calloc size t num elements,size t element size 在標頭檔案中宣告的calloc 函式與malloc 函式相比有兩個優點。第一,它把記憶體分配為給定大小的陣列,第二,它初始化了所分配的記憶體,...

calloc與realloc函式 堆區分配記憶體

不同點在於 calloc 會將分配的記憶體初始化為0如果分配的記憶體比原來要大,這個時候有兩種情況出現 1 原有空間後序有足夠大的空閒空間,那麼直接在原有空間後繼續開闢記憶體,返回原有空間的首位址 2 原有空間後序沒有足夠大空閒空間,重新會分配乙個足夠大的空間,並且將原有空間的內容拷貝到新空間下,釋...

記憶體分配函式

2.c中提供堆區供給開發者分配記憶體空間,動態記憶體分配函式malloc,calloc,realloc 1 malloc函式的使用,原型為void malloc int length 引數為分配記憶體空間的大小 將記憶體分配4個位元組給乙個int型指標 返回值為任何指標 考慮到不同平台,可以使用si...