我想了解內存分配如何在編譯和加載程序的不同階段工作。內存地址:Linker VS.加載程序
1)編譯器和彙編產生代碼和數據段開始該地址爲0
2)鏈接器通過存儲器位置 與每個符號的定義相關聯,然後修改所有的引用重新定位這些部分 到那些符號,以便它們指向這個內存位置。
3)加載程序將程序加載到主內存中,在進程的上下文中,因此,在這一步,分頁和所有與內存管理相關的操作完成。
我的問題是兩件事:
1)如何可通過與由裝載機分配的那些鏈接指定的地址。我們可以調用鏈接器地址虛擬地址嗎?
2)是否所有的程序具有相同的虛擬地址(即最終被映射到不同的物理地址?)