您好,登錄后才能下訂單哦!
小編給大家分享一下CentOS下程序內存空間分配的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
先來看一段簡單代碼:
[cpp] view plaincopy在CODE上查看代碼片派生到我的代碼片 #include <stdio.h> #include <unistd.h> int main() { printf("%d\n",getpid()); while(1); }
運行結果:
這時另開一個終端,輸入cat /proc/10073/maps,出現如下顯示:
[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]
實際上,第一行是代碼區所占的內存空間,804800-804900,實際上幾乎所有的linux程序代碼段都是從804800開始的,第二行是全局棧區所占的內存空間,第三行是堆空間所占的內存空間,最后一行是局部棧所占的內存空間。
同時,我們會發現除了代碼段的權限是r-xp(可讀-不可寫-可執行-私有保護)之外,其他三個都是不可執行的。
以上是“CentOS下程序內存空間分配的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。