close
C語言的變數有三種記憶體管理模式:
- Automatic 記憶體管理模式: 變數的生命期間是從第一次宣告開始被自動配置記憶體,當生命期間結束,記憶體即被移除。一般變數宣告皆屬Automatic變數。
- Static 記憶體管理模式: 變數資料在main程式執行之前便已經被初始化,未被指定初始化的Static變數會被自動指定為0或NULL,一般變數加上Static宣告即屬於此種記憶體管理模式。
EX: static int x;
- 自行管理記憶體模式: 透過malloc()函式配置並需要用free()釋放的變數,是唯一能讓C語言自由改變宣告陣列大小的模式。
C語言變數可以是與檔案外的變數連結,也可以僅與檔案內部連結,我們稱這是C語言變數的外部連結與內部連結。一般可以透過extern(外部連結)與static(內部連結)讓C語言變數(或函式)決定其在檔案間的可見範圍。
在此同樣分三部份討論:
- 生存空間是檔案的變數(全域變數): 預設是外部連結,加上static之後可將變數限制在檔案內成內部連結變數。 檔案變數的記憶體管理方式則都是static 管理模式。
- 生存空間在區塊內的變數(區域變數): 預設是內部連結,可以透過extern轉變為外部連結變數,但不建議這麼做。 區域變數記憶體模式是automatic模式,但加上static會轉變為static模式。
- 檔案函式: 函式在連結方式與記憶體模式上都與全域變數屬於同類,預設都是外部連結方式,也就是其他檔案都可視,同樣必須透過static才能轉為內部連結。記憶體管理模式同樣是static類。
2018年7月15日星期日
文章標籤
全站熱搜
留言列表