計算機資料儲存原理:記憶體層級、位元組編址與程式映射完整解析
應用程式在記憶體中執行,對各類資料進行操作。理解計算機如何儲存資料、記憶體如何編址、程式如何映射到記憶體,是系統程式設計與效能優化的基石。
一、儲存層級:主記憶體與輔助記憶體
- 主記憶體(RAM):程式執行時載入的工作區,速度快、易失性
- 輔助記憶體(硬碟、SSD):持久化儲存,容量大、非易失性、速度較慢
- 檔案/程式執行前必須從輔助記憶體載入主記憶體
二、儲存單元與位元組編址
- 最小單位:位元,電子開關兩態(0/1)
- 基本編址單位:位元組 = 8 位元
- 每個位元組擁有唯一位址,依序編號(0, 1, 2...)
- CPU 透過位址總線指定位址,資料總線傳輸資料
- 程式設計師通常不直接操作實體位址,由編譯器/連結器自動分配虛擬位址
三、資料在記憶體中的表示
| 資料類型 | 儲存方式 | 備註 |
| 字元 | ASCII/Unicode 編碼,1 位元組 | char 佔 1 Byte |
| 整數 | 二進位補碼,通常 2/4/8 位元組 | short/int/long |
| 浮點數 | IEEE 754 標準,通常 4/8 位元組 | float/double |
所有資料最終皆轉為二進位位元組序列存放。
四、程式在記憶體中的映射模型
作業系統載入程式時,建立以下記憶體區段:
- 程式碼區(Text Segment):機器指令,唯讀、可共享
- 靜態資料區(Data/BSS Segment):
- Data:已初始化全域/靜態變數、常數
- BSS:未初始化全域/靜態變數(啟動時清零)
- 動態資料區:
- 堆疊:函式呼叫框架、參數、返回位址、區域變數,自動管理、FILO
- 堆積:
malloc/free 手動管理,任意順序分配釋放,易產生碎片與洩漏
動態資料回收機制
- 自動回收(堆疊):函式返回時自動釋放
- 手動回收(堆積):程式設計師呼叫
free,遺忘導致記憶體洩漏
五、關鍵觀念總結
- 記憶體是位元組陣列,每字節有唯一位址
- 資料型別決定位元組數與解讀方式
- 程式執行 = 程式碼區指令 + 靜態資料 + 動態堆疊/堆積
- 指標本質是儲存位址的變數,型別決定解讀方式與算術步長
- 理解記憶體佈局有助於除錯(如堆疊溢位、野指標、洩漏)
掌握資料儲存原理,能讓你寫出更安全、高效的 C/C++ 程式,也為學習作業系統、編譯器、嵌入式開發奠定堅實基礎。