2012-03-27 75 views
2

Msdn內存映射文件誤解?

內存映射文件允許程序員非常大 文件的工作,因爲內存可以同時管理,和他們允許無需 齊全,隨機訪問文件尋求

問題:

內存Mappe整個文件的原則是讀/寫字節,並建立由位置和偏移的觀點。

這是什麼意思「不需要尋求」?

I MUST必須知道開始和結束(偏移)以讀取文件。

所以追求DOES EXISTS!

我不要尋求在這個龐大的字節數組....

我失去了什麼?

回答

2

MMF具有隨機存取功能,與普通文件相比,讀取或寫入發生時有1個特定點。

使用偏移量(和指針等)不同於在流中查找。

我必須知道一開始,爲了讀取文件

你不'讀取文件末尾(偏移),您訪問內存,並且需要地址(ES),不一個流的位置。

+1

.1。這不是尋求光盤明智,它意味着沒有像在流中尋求。你可以在文件中跳轉,因爲你將它作爲數組訪問。 STREAM你會改變立場 - 這是更笨拙的編程明智。 – TomTom 2012-03-27 09:16:25

+0

如果我有一個100 MB的記錄文件(人員類)。它不可能像這樣訪問其中間內容。所以我不得不從一開始就開始,然後通過記錄閱讀reciord直到需要的記錄。我不能在陣列中間......? – 2012-03-27 09:25:58

+0

你如何訪問MMF?作爲一個流? – 2012-03-27 09:33:26

3

當使用內存映射文件時,您基本上會獲得一個指向內存塊的指針,並以某種類型的數組的形式對其進行訪問。然後訪問文件中的特定位置是基於索引和/或基於偏移量的內存訪問。操作系統管理隱藏在後面的需求。

1

MMF是實際「映射」到虛擬內存空間的文件,因此您可以將其視爲像Dictionary(關於Array)(非常一般的比較)。當處理非常大的文件時,通過訪問該文件的以繼續進行,這很舒服(如果不是唯一可能的話)解決方案。我想說,可能每個視頻編輯軟件都使用這種技術。沒有別的辦法。