有关内存空间
對(duì)于一臺(tái)內(nèi)存為256M的32bit x86主機(jī)來說,它的虛擬地址空間范圍是0~0xFFFFFFFF(4G),而物理地址空間范圍是0x00000000~0x0FFFFFFF(256M)。
?
一般我們所說的程序在內(nèi)存中的分布指的就是程序在虛擬內(nèi)存中的存儲(chǔ)方式。
?
從低地址到高地址,可分為下面幾段:?
預(yù)留內(nèi)存地址(操作系統(tǒng)維護(hù)的內(nèi)存地址,不可訪問)?
?
程序代碼區(qū)(只讀,存代碼和一些其他的東西);?
?
data段(存初始化的全局變量和static變量,另外還有文字常量區(qū),常量字符串就是放在這里,程序結(jié)束后有系統(tǒng)釋放);?
?
bss段(存未初始化的全局變量和static變量);?
?
堆(由低地址向高地址增長(zhǎng),一般(C++)new和(C)malloc分配,由程序員分配釋放);
?
共享庫(kù)文件(調(diào)用的庫(kù)文件,位于堆和棧之間);?
?
棧(由高地址向低地址增長(zhǎng),和堆的增長(zhǎng)方式相對(duì),對(duì)不同的OS來說,棧的初始大小有規(guī)定,可以修改,目前默認(rèn)一般為2M,由編譯器自動(dòng)分配釋放);?
總結(jié)