- C和C++安全編碼(原書第2版)
- (美)Robert C.Seacord
- 354字
- 2020-10-30 17:56:40
2.3.4 進程內存組織
進程
已載入內存并受操作系統管理的程序實例。
如圖2.5的(a)列所示,進程的內存一般分為code(代碼段)、data(數據段)、heap(堆)以及stack(棧)。
code和text段包含了程序的指令和只讀數據。它們可以被標記為只讀,從而當試圖對其對應的內存進行修改時,就會引發錯誤。(把內存標記為只讀有兩種方法,一是使用支持該功能的計算機硬件平臺的內存管理硬件,二是安排內存,使可寫的數據和只讀數據存儲在不同的頁面。)data段包含了初始化數據、未初始化數據、靜態變量以及全局變量。heap則用于動態地分配進程內存。stack是一個后進先出(last-in,first-out,LIFO)數據結構,用于支持進程的執行。
進程內存的精確組織形式依賴于操作系統、編譯器、鏈接器以及載入器—換言之,依賴于編程語言的實現。圖2.5的(b)列和(c)列展示了UNIX和Win32上可能的進程內存組織形式。
圖2.5 進程內存組織
推薦閱讀
- 高級C/C++編譯技術(典藏版)
- 人人都懂設計模式:從生活中領悟設計模式(Python實現)
- Reactive Android Programming
- 飛槳PaddlePaddle深度學習實戰
- Django 3.0入門與實踐
- QGIS 2 Cookbook
- Mastering Concurrency Programming with Java 9(Second Edition)
- Android Studio Cookbook
- Fastdata Processing with Spark
- SAS編程演義
- Spring Boot 3:入門與應用實戰
- Web程序設計與架構
- 邊做邊學深度強化學習:PyTorch程序設計實踐
- Python編程基礎
- C#網絡程序開發(第二版)