日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】程序在内存中的分布

發布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】程序在内存中的分布 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?前些天學習到了程序在虛擬內存中分布的一些知識點,結合在網上查閱的一些資料,整理一下知識點。本博客參考博主?hackbuteer1的《程序在內存中的分布》這篇文章。

?

? ??

?

v?在現代的操作系統中,當我們說到內存,往往需要分兩部分來講:物理內存和虛擬內存。從硬件上講,虛擬空間是CPU內部的尋址空間,位于MMU之前,物理空間是總線上的尋址空間,是經過MMU轉換之后的空間。

?

例如:對于一臺內存為256M的32bit x86主機來說,它的虛擬地址空間范圍是0~0xFFFFFFFF(4G),而物理地址空間范圍是0x00000000~0x0FFFFFFF(256M)。

?

v?一般我們所說的程序在內存中的分布指的就是程序在虛擬內存中的存儲方式。

?

從低地址到高地址,可分為下面幾段:?

??預留內存地址(操作系統維護的內存地址,不可訪問)?

?

??程序代碼區(只讀,存代碼和一些其他的東西);?

?

??data段(存初始化的全局變量和static變量,另外還有文字常量區,常量字符串就是放在這里,程序結束后有系統釋放);?

?

??bss段(存未初始化的全局變量和static變量);?

?

??堆(由低地址向高地址增長,一般(C++)new和(C)malloc分配,由程序員分配釋放);

?

??共享庫文件(調用的庫文件,位于堆和棧之間);?

?

??棧(由高地址向低地址增長,和堆的增長方式相對,對不同的OS來說,棧的初始大小有規定,可以修改,目前默認一般為2M,由編譯器自動分配釋放);?

?

?

?

?

?

v?以上程序在虛擬內存空間中的分布,適用于一般的操作系統和內核。但不完全適用,例如:《unix系統編程》32位下,0-3G是用戶區,3G-4G是內核區。

總結

以上是生活随笔為你收集整理的【转】程序在内存中的分布的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。