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