天天看點

動态記憶體開辟函數

realloc()函數

原型:extern void *realloc(void *mem_address, unsigned int newsize);

文法:指針名=(資料類型*)realloc(要改變記憶體大小的指針名,新的大小)。

頭檔案:#include <stdlib.h> 有些編譯器需要#include <alloc.h>,在TC2.0中可以使用alloc.h頭檔案

功能:先按照newsize指定的大小配置設定空間,将原有資料從頭到尾拷貝到新配置設定的記憶體區域,而後釋放原來mem_address所指記憶體區域,同時傳回新配置設定的記憶體區域的首位址。即重新配置設定存儲器塊的位址。

傳回值:如果重新配置設定成功則傳回指向被配置設定記憶體的指針,否則傳回空指針NULL。

注意:這裡原始記憶體中的資料還是保持不變的。當記憶體不再使用時,應使用free()函數将記憶體塊釋放。

malloc()函數

原型:extern void *malloc(unsigned int num_bytes);

頭檔案:在TC2.0中可以用malloc.h或 alloc.h (注意:alloc.h 與 malloc.h 的内容是完全一緻的),而在Visual C++6.0中可以用malloc.h或者stdlib.h。

功能:配置設定長度為num_bytes位元組的記憶體塊

傳回值:如果配置設定成功則傳回指向被配置設定記憶體的指針,否則傳回空指針NULL。當記憶體不再使用時,應使用free()函數将記憶體塊釋放。

說明:關于該函數的原型,在舊的版本中malloc傳回的是char型指針,新的ANSIC标準規定,該函數傳回為void型指針,是以必要時要進行類型轉換。

calloc()函數

calloc是一個C語言函數

功 能: 在記憶體的動态存儲區中配置設定n個長度為size的連續空間,函數傳回一個指向配置設定起始位址的指針;如果配置設定不成功,傳回NULL。

跟malloc的差別:

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

用 法: void *calloc(unsigned n,unsigned size);

OOO