記憶體對映檔案

2022-07-31 04:06:12 字數 2950 閱讀 7164

在最後乙個程序使用完此檔案後,資料將儲存到磁碟上的原始檔中。

當最後乙個程序使用完此檔案後,資料將丟失,並且垃圾**功能將**此檔案。

這些檔案適用於為程序間通訊 (ipc) 建立共享記憶體。

有兩種型別的檢視:流訪問檢視和隨機訪問檢視。

使用流訪問檢視可對檔案進行順序訪問;對於非持久檔案和 ipc,這是建議的方法。

在使用持久檔案時,隨機訪問檢視是首選方法。

您不需要自行處理記憶體管理。

使用的方法或屬性

物件。createfromfile

方法。物件。

createnew

方法。- 或 -

createoropen

方法。物件。

openexisting

方法。unmanagedmemorystream

物件。createviewstream

方法。unmanagedmemoryaccessor

物件。createviewaccessor

方法。物件。

屬性。- 或 -

屬性。- 或 -

屬性。將記憶體分配推遲到建立檢視後進行(僅限於非持久檔案)。

environment.

systempagesize

property.)'>(若要確定當前系統頁大小,請使用 environment.systempagesize

屬性。)

createnew

delayallocatepages

方法。- 或 -

createoropen

方法。列舉作為引數)來應用訪問許可權:

方法,可以指定用於開啟現有記憶體對映檔案的訪問許可權。

物件,該物件包括預定義的訪問規則。

方法。getaccesscontrol

方法。createfromfile

方法基於磁碟上的現有檔案建立乙個記憶體對映檔案。

複製

using system;

using system.io;

using system.runtime.interopservices;

class program

}} }

public

struct mycolor }

}

複製

using system;

using system.runtime.interopservices;

class program}}

}}public

struct mycolor

}

createnew

and createoropen

方法建立乙個未對映到磁碟上的現有檔案的記憶體對映檔案。

將發生下面一系列操作:

若要執行此示例,請執行以下步驟:

process a.'>在第乙個命令提示符視窗中,執行 process a。

process b.'>在第二個命令提示符視窗中,執行 process b。

process a and press enter.'>返回到 process a 並按 enter。

process c.'>在第三個命令提示符視窗中,執行 process c。

process a and press enter.'>返回到 process a 並按 enter。

process a is as follows:'> process a 的輸出如下所示:

複製

start process b and press enter to continue.

start process c and press enter to continue.

process a says: true

process b says: false

process c says: true

程序 a

複製

using system;

using system.io;

using system.threading;

class program

mutex.releasemutex();

console.writeline("start process b and press enter to continue.");

console.readline();

console.writeline("start process c and press enter to continue.");

console.readline();

mutex.waitone();

", reader.readboolean());

console.writeline("process b says: ", reader.readboolean());

console.writeline("process c says: ", reader.readboolean());

}mutex.releasemutex();}}

}

程序 b

複製

using system;

using system.io;

using system.threading;

class program

mutex.releasemutex();}}

catch (filenotfoundexception)}}

程序 c

複製

using system;

using system.io;

using system.threading;

class program

mutex.releasemutex();}}

catch (filenotfoundexception)}}

記憶體對映檔案

記憶體對映檔案是利用虛擬記憶體把檔案對映到程序的位址空間中去,在此之後程序操作文 件,就像操作程序空間裡的位址一樣了,比如使用 memcpy 等記憶體操作的函式。這種方法能 夠很好的應用在需要頻繁處理乙個檔案或者是乙個大檔案的場合,這種方式處理 io效率比 普通 io效率要高。另外,unix 把它做...

記憶體對映檔案

記憶體對映檔案有三種,第一種是可執行檔案的對映,第二種是資料檔案的對映,第三種是借助頁面交換檔案的記憶體對映.應用程式本身可以使用後兩種記憶體對映.1.可執行檔案對映 windows在執行乙個win32應用程式時使用的是記憶體對映檔案技術.系統先在程序位址空間的0x00400000以上保留乙個足夠大...

記憶體檔案對映

一直都對記憶體對映檔案這個概念很模糊,不知道它和虛擬記憶體有什麼區別,而且對映這個詞也很讓人迷茫,今天終於搞清楚了。下面,我先解釋一下我對對映這個詞的理解,再區分一下幾個容易混淆的概念,之後,什麼是記憶體對映就很明朗了。首先,對映 這個詞,就和數學課上說的 一一對映 是乙個意思,就是建立一種一一對應...