[問題] 如何用fopen()讀取記憶體裡的資料

看板C_and_CPP作者 (下一夜)時間9年前發表 (2016/01/28 14:20), 9年前編輯推噓6(604)
留言10則, 7人參與, 最新討論串1/1
最簡單的方法是將記憶體的資料拿出來建立一個真的檔案 再讓fopen()之類的IO函式去讀取 但是面對大量資料時就還是多浪費了時間 還要檢查暫時生出來的檔案名稱是不是跟既存的檔案名重疊 有沒有比較好的做法來處理這種問題? 舉個例子說明我為何有這需求 例如我解開壓縮檔之後解開的檔案當然是在記憶體上面,如果是讀壓縮檔裡的bmp檔倒 是沒甚麼困擾,因為本來就是直接對記憶體動手,讀檔頭、挖自己需要的部分。 但是png檔則需要透過官方的API來讀,而它的介面只允許我輸入檔案名稱,不能傳入 該檔的記憶體位址,所以我想知道有沒有甚麼好方法,不要多費工去硬碟上建立真的檔案 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.76.61 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1453990809.A.245.html

01/28 22:23, , 1F
不考慮用IPC嗎??
01/28 22:23, 1F

01/28 22:25, , 2F
記憶體?直接指標存取不就好了
01/28 22:25, 2F

01/28 22:39, , 3F
IPC能讓記憶體資料被當成檔案讀取?我再查查看,thanks
01/28 22:39, 3F

01/29 04:51, , 4F
透過官方 API? 你是用什麼方法讀取 png?
01/29 04:51, 4F

01/29 04:53, , 5F
如果是直接用 libpng 那從記憶體讀資料非常簡單
01/29 04:53, 5F

01/29 04:54, , 6F
如果是一些其他的 framework 我相信一定有方法指定從記憶體
01/29 04:54, 6F

01/29 04:54, , 7F
讀取資料出來...
01/29 04:54, 7F
我目前查到的方向也都是從官方給出的介面中尋找直接讀記憶體資料的方法 想把記憶體偽裝成檔案交給fopen()讀取真的是不可行 因為FILE的結構沒有標準規範,各平台各寫自己的一套 ※ 編輯: eye5002003 (220.129.76.184), 01/29/2016 21:34:36

01/30 09:11, , 8F
01/30 09:11, 8F

01/30 10:15, , 9F
直接sharemem
01/30 10:15, 9F

01/30 13:15, , 10F
原來有fmemopen這種東西
01/30 13:15, 10F
文章代碼(AID): #1MgYEP95 (C_and_CPP)