小編給大家分享一下CentOS下程序內(nèi)存空間分配的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
目前成都創(chuàng)新互聯(lián)公司已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、電白網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
先來(lái)看一段簡(jiǎn)單代碼:
[cpp] view plaincopy在CODE上查看代碼片派生到我的代碼片 #include#include int main() { printf("%d\n",getpid()); while(1); }
運(yùn)行結(jié)果:
這時(shí)另開(kāi)一個(gè)終端,輸入cat /proc/10073/maps,出現(xiàn)如下顯示:
[cpp] view plaincopy在CODE上查看代碼片派生到我的代碼片 08048000-08049000 r-xp 00000000 fd:01 14844 /home/Alex/DaNei/Interview/a.out 08049000-0804a000 r--p 00000000 fd:01 14844 /home/Alex/DaNei/Interview/a.out 0804a000-0804b000 rw-p 00001000 fd:01 14844 /home/Alex/DaNei/Interview/a.out 4427b000-4429a000 r-xp 00000000 fd:01 393917 /usr/lib/ld-2.17.so 4429a000-4429b000 r--p 0001e000 fd:01 393917 /usr/lib/ld-2.17.so 4429b000-4429c000 rw-p 0001f000 fd:01 393917 /usr/lib/ld-2.17.so 442a3000-4445b000 r-xp 00000000 fd:01 393918 /usr/lib/libc-2.17.so 4445b000-4445c000 ---p 001b8000 fd:01 393918 /usr/lib/libc-2.17.so 4445c000-4445e000 r--p 001b8000 fd:01 393918 /usr/lib/libc-2.17.so 4445e000-4445f000 rw-p 001ba000 fd:01 393918 /usr/lib/libc-2.17.so 4445f000-44462000 rw-p 00000000 00:00 0 b7752000-b7753000 rw-p 00000000 00:00 0 b7769000-b776b000 rw-p 00000000 00:00 0 b776b000-b776c000 r-xp 00000000 00:00 0 [vdso] bfe13000-bfe34000 rw-p 00000000 00:00 0 [stack]
實(shí)際上,第一行是代碼區(qū)所占的內(nèi)存空間,804800-804900,實(shí)際上幾乎所有的linux程序代碼段都是從804800開(kāi)始的,第二行是全局棧區(qū)所占的內(nèi)存空間,第三行是堆空間所占的內(nèi)存空間,最后一行是局部棧所占的內(nèi)存空間。
同時(shí),我們會(huì)發(fā)現(xiàn)除了代碼段的權(quán)限是r-xp(可讀-不可寫(xiě)-可執(zhí)行-私有保護(hù))之外,其他三個(gè)都是不可執(zhí)行的。
以上是“CentOS下程序內(nèi)存空間分配的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!