根據使用函式不同,作用各不相同。共同點均是動態分配一段記憶體,使用後需要用free函式釋放。所有動態分配函式均宣告在stdlib.h中。
1 malloc
void *malloc(unsigned int num_bytes);
功能
分配長度為num_bytes位元組的記憶體塊
返回值
如果分配成功則返回指向被分配記憶體的指標(此儲存區中的初始值不確定),否則返回空指標NULL。當記憶體不再使用時,應使用free()函式將記憶體塊釋放。函式返回的指標一定要適當對齊,使其可以用於任何資料物件。
說明
關於該函式的原型,在以前malloc返回的是char型指標,新的ANSIC標準規定,該函式返回為void型指標,因此必要時要進行型別轉換。
2 calloc
void *calloc(size_t n, size_t size);
在記憶體的動態儲存區中分配n個長度為size的連續空間,函式返回一個指向分配起始地址的指標;如果分配不成功,返回NULL。
calloc在動態分配完記憶體後,自動初始化該記憶體空間為零,而malloc不初始化,裡邊資料是隨機的垃圾資料。
3 realloc
void *realloc(void *mem_address, unsigned int newsize);
先判斷當前的指標是否有足夠的連續空間,如果有,擴大mem_address指向的地址,並且將mem_address返回,如果空間不夠,先按照newsize指定的大小分配空間,將原有資料從頭到尾複製到新分配的記憶體區域,而後釋放原來mem_address所指記憶體區域(注意:原來指標是自動釋放,不需要使用free),同時返回新分配的記憶體區域的首地址。即重新分配儲存器塊的地址。
如果重新分配成功則返回指向被分配記憶體的指標,否則返回空指標NULL。
注意
當記憶體不再使用時,應使用free()函式將記憶體塊釋放。
根據使用函式不同,作用各不相同。共同點均是動態分配一段記憶體,使用後需要用free函式釋放。所有動態分配函式均宣告在stdlib.h中。
1 malloc
void *malloc(unsigned int num_bytes);
功能
分配長度為num_bytes位元組的記憶體塊
返回值
如果分配成功則返回指向被分配記憶體的指標(此儲存區中的初始值不確定),否則返回空指標NULL。當記憶體不再使用時,應使用free()函式將記憶體塊釋放。函式返回的指標一定要適當對齊,使其可以用於任何資料物件。
說明
關於該函式的原型,在以前malloc返回的是char型指標,新的ANSIC標準規定,該函式返回為void型指標,因此必要時要進行型別轉換。
2 calloc
void *calloc(size_t n, size_t size);
在記憶體的動態儲存區中分配n個長度為size的連續空間,函式返回一個指向分配起始地址的指標;如果分配不成功,返回NULL。
calloc在動態分配完記憶體後,自動初始化該記憶體空間為零,而malloc不初始化,裡邊資料是隨機的垃圾資料。
3 realloc
void *realloc(void *mem_address, unsigned int newsize);
功能
先判斷當前的指標是否有足夠的連續空間,如果有,擴大mem_address指向的地址,並且將mem_address返回,如果空間不夠,先按照newsize指定的大小分配空間,將原有資料從頭到尾複製到新分配的記憶體區域,而後釋放原來mem_address所指記憶體區域(注意:原來指標是自動釋放,不需要使用free),同時返回新分配的記憶體區域的首地址。即重新分配儲存器塊的地址。
返回值
如果重新分配成功則返回指向被分配記憶體的指標,否則返回空指標NULL。
注意
當記憶體不再使用時,應使用free()函式將記憶體塊釋放。