1. 程式人生 > >malloc、colloc和alloc區別

malloc、colloc和alloc區別

1.分配記憶體空間函式malloc

  呼叫形式: (型別說明符*) malloc (size) 
功能:在記憶體的動態儲存區中分配一塊長度為"size" 位元組的連續區域。函式的返回值為該區域的首地址。 
“型別說明符”表示把該區域用於何種資料型別。(型別說明符*)表示把返回值強制轉換為該型別指標。“size”是一個無符號數。例如: 
pc=(char *) malloc (100); 表示分配100個位元組的記憶體空間,並強制轉換為字元陣列型別, 
函式的返回值為指向該字元陣列的指標, 把該指標賦予指標變數pc。

2.分配記憶體空間函式 calloc


calloc 也用於分配記憶體空間。呼叫形式: (型別說明符*)calloc(n,size) 

功能:在記憶體動態儲存區中分配n塊長度為“size”位元組的連續區域。函式的返回值為該區域的首地址。(型別說明符*)用於強制型別轉換。calloc函
數與malloc 函式的區別僅在於一次可以分配n塊區域。例如: ps=(struet stu*) calloc(2,sizeof (struct
stu)); 其中的sizeof(struct 
stu)是求stu的結構長度。因此該語句的意思是:按stu的長度分配2塊連續區域,強制轉換為stu型別,並把其首地址賦予指標變數ps。

簡單的說是:

malloc它允許從空間記憶體池中分配記憶體,malloc()的引數是一個指定所需位元組數的整數.
例如:P=(int*)malloc(n*sizeof(int));

colloc與malloc類似,但是主要的區別是儲存在已分配的記憶體空間中的值預設為0,使用malloc時,已分配的記憶體中可以是任意的值.
colloc需要兩個引數,第一個是需要分配記憶體的變數的個數,第二個是每個變數的大小.
例如:P=(int*)colloc(n,colloc(int));