2010年5月6日 星期四

C/C++ 動態記憶體配置

動態記憶體配置有別於靜態記憶體配置:
◎ 靜態記憶體配置是在編譯(Compile)階段就完成記憶體空間的配置

◎ 動態記憶體配置則是等到執行階段(runtime)才向作業要求配置所需的記憶體空間,動態記憶體配置的方法,可靈活運用程式所需的記憶體空間。

C/C++標準函式庫提供了兩個函式『malloc()』與『free()』,可以像作業系統要求配置與釋放程式所需的記憶體空間。

【malloc()】:配置記憶體空間

語法:

(資料型態 *) 變數名稱 = (資料型態 *)malloc(sizeof(資料型態));

配置成功傳回指向此記憶體空間的指標,配置失敗則回傳NULL。

例如:

int *integer = (int *)malloc(sizeof(int));

// 配置結構陣列的記體空間(例如:陣列大小為10)
struct abc *s;
s = (struct abc *)malloc*(10*sizeof(struct abc));

【free()】:釋放配置的記憶體空間

free()函式可以釋放malloc()函式所配置出來的記憶體空間,例如integer指標指向malloc()所配置記憶體的位址,即可呼叫free()來釋放記憶體空間:

// 配置記憶體
int *integer = (int *)malloc(sizeof(int));

// 釋放記憶體
free(integer);

1 則留言:

Alex 提到...

C++ 是用 new 跟 delete 囉~