2009年2月16日 星期一

C - malloc()、free()、calloc() 與 realloc()

void * malloc ( size_t size );
宣告記憶體空間為size大小的記憶體空間。
回傳為此空間的第一個記憶體位址

void free ( void * ptr );
用malloc或是calloc宣告空間的話,必需用free釋放記憶體空間。

void * calloc ( size_t num, size_t size );
取得記憶體大小為size,數量為num的空間
且內容值均為0
回傳值為第一個元素的記憶體空間

void * realloc ( void * ptr, size_t size );
重新分配記憶體空間,但是,回傳的記憶體空間的第一個位置不一定跟原先的位址相同。
且不必對ptr做free的動作了。

#include <stdlib.h>
void *memalign(size_t boundary, size_t size);
配置size大小的空間,回傳的起始位址(記憶體位址)必定是boundary的倍數,其中boundary必定是2的n次方

參考資料:
C Gossip: malloc()、free()、calloc() 與 realloc()
Linux / Unix Command: memalign

沒有留言: