1
我試圖廣發行功能,與它的調用堆棧,調用一個落入地址a4734000-a4e93000,所以我檢查在/ proc //地圖文件,發現有:如何在proc地圖中找不到映射文件?
a4734000-a4e93000 r-xp 00000000 00:00 0
a4ee0000-a527c000 r-xp 00000000 00:00 0
這不對我來說是有意義的,因爲通常它會顯示映射爲可執行地址的目標二進制文件。有誰知道這是某種詭計?非常感謝。
感謝@ g-v,很好的回答。 但我仍然不明白爲什麼malloc創建的內存將有權限「X」? –
請參閱http://pubs.opengroup.org/onlinepubs/009695399/functions/mmap.html和http://man7.org/linux/man-pages/man2/mprotect.2.html。 POSIX:「一個實現可能允許訪問除prot指定的訪問以外」。 Linux:「PROT_EXEC是否具有與PROT_READ不同的作用取決於處理器體系結構,內核版本和進程狀態」。換句話說,它是硬件的限制(它可能不支持單獨的頁面的PROT_EXEC標誌)或軟件。 – gavv