簡體   English   中英

使用.so(共享庫)中的內存映射文件

[英]Using memory-mapped files from within a .so (shared object)

從共享對象(.so)中訪問共享內存(內存映射文件,使用固定地址0x60000000)時出現段錯誤。

我們有許多應用程序可以輕松訪問此共享內存。 我的應用程序的不同之處在於,我使用它創建了一個小.so,而.so是調用mmap並訪問共享內存的那個。

mmap()返回就可以了。 我要求的地址已正確返回。 但是,一旦我嘗試從此.so內部訪問內存,就會出現段錯誤。

我無法弄清楚.so的獨特之處,因此會阻止它以這種方式訪問​​共享內存。

有人有想法嗎?

通常,從共享庫訪問mmap內存與從主可執行文件訪問mmap內存沒有什么不同 ,並且您很可能在錯誤的樹狀結構中咆哮。 也就是說:

內存映射文件,使用固定地址0x60000000

通常這是一個非常糟糕的主意 ,因為您無法控制以前在那里mmap過的內容(如果有的話)。 MAP_FIXED映射將只刪除以前存在的任何映射。 如果您的庫本身恰好被映射到那里,那么您將替換庫.text.data ,結果幾乎可以肯定是一次神秘的崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM