1

I was wondering, that what file extension do those memory mapped files have. Are they .dll's or something like that. Another thing is that can I use such a file, if I don't know its contents.

4

4 回答 4

5

内存映射文件有什么文件扩展名?

内存映射文件可以有任何文件扩展名。您可以为任何文件创建文件映射。

如果我不知道它的内容,我可以使用这样的文件吗?

是的,您可以在不知道其内容的情况下为任何文件创建文件映射。


这些答案是如此琐碎,以至于我怀疑您并不完全了解内存映射文件是什么以及它们为何有用。我怀疑您应该问的问题是:什么是内存映射文件?

于 2013-03-03T11:42:15.043 回答
3

引用自MSDN

内存映射文件包含虚拟内存中文件的内容。文件和内存空间之间的这种映射使包括多个进程的应用程序能够通过直接读取和写入内存来修改文件。从 .NET Framework 4 开始,您可以使用托管代码访问内存映射文件,其方式与本机 Windows 函数访问内存映射文件的方式相同,如 MSDN 库中的在 Win32 中管理内存映射文件中所述。

有两种类型的内存映射文件:

  • 持久化内存映射文件 持久化文件是与磁盘上的源文件相关联的内存映射文件。当最后一个进程完成对文件的处理后,数据将保存到磁盘上的源文件中。这些内存映射文件适用于处理非常大的源文件。

  • 非持久化内存映射文件

    非持久文件是与磁盘上的文件无关的内存映射文件。当最后一个进程完成对文件的处理时,数据会丢失,文件会被垃圾回收器回收。这些文件适用于为进程间通信 (IPC) 创建共享内存。

于 2013-03-03T11:43:17.713 回答
1

内存映射文件是操作系统提供的一种技术,它允许您访问任何给定文件,就好像它是一块内存一样。操作系统只是将其映射到您的进程可用的操作内存的一部分。

不多也不少。因此,重新考虑文件的扩展名和对其内容的了解是无关紧要的。但是,人们会期望您知道您正在尝试使用的文件中的内容。

于 2013-03-03T11:42:26.150 回答
1

“内存映射文件”的起源来自 OS/2(Windows NT 的前身),它被称为“全局共享内存段”,实际上这是一个更准确的术语。

这些用于跨应用程序共享内存中的数据。此类数据可以在所有与其挂钩的应用程序上保存到磁盘,也已退出(持久性)......有时需要,有时不需要。

对于那些谈论将文件读入内存的人,是的,你可以这样做,但你为什么要这样做?您是否需要重新读取同一个文件?如果是这样,请获取您需要的内容并加载一些变量(例如配置文件)。

此功能真正用于共享不断修改(由一个或多个应用程序)并由一个或多个应用程序读取的数据。比使用数据库、读/写磁盘文件等更容易、更快捷。

于 2013-12-02T22:56:59.063 回答