创建内存文件
Creating a memory file
我想在内存中创建一个临时文件,而不写入磁盘,可以使用CreateFile
从其他进程打开读取,就好像它是一个普通文件一样。
这是可能的,还是我必须把它写到磁盘上?
您所要求的通常不能用CreateFile()
完成(除非您使用RAMdisk方法),但可以使用CreateFileMapping()
和MapViewOfFile()
来完成。可以为映射对象分配一个名称,以便跨进程边界共享它,然后多个进程可以根据需要向它开放自己的视图。
CreateFile以文件路径作为参数。为了使其他进程能够打开它,该文件的位置必须映射到系统中存在的设备之一。
这样的设备之一可以是RAM磁盘/设备,您可以在其中创建文件而无需将其写入物理磁盘(内存交换除外)。但这需要安装和激活这样一个(虚拟)设备。
如果你只需要在进程之间共享内存,那么看看shmem的实现吧。
相关文章:
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- WinVerifyTrust 仅在使用文件而不是内存 blob 时才有效
- 如何在多写入器情况下对文件支持的共享内存中的大页面出错
- 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- 内存映射文件访问非常慢
- 我正在尝试创建一个C++映射,该映射在boost内存映射文件中具有向量值
- 这些结构在文件中的大小不同,但在程序内存中的大小相同
- 在嵌入式系统中读取文件的内存碎片
- 如何从文件中读取 100x24 矩阵并将其作为浮点矩阵保存在内存中?
- 测量任何 Windows 可执行文件的内存使用情况和执行时间
- 提升进程间共享内存删除、权限和输出文件
- 将内存文件添加到 clang 编译器实例
- 为什么我的 C++ 程序在执行 TCMALLOC 堆检查器或堆配置文件时使用大量内存
- C++ 从磁盘读取文件并将其写入共享内存
- 为什么在编译时需要知道对象的内存配置文件以进行堆栈放置?
- 为什么 du -sh 输出错误大小的内存映射文件
- 将内存保存到文件并加载它而不必解析数据?
- 将提升管理的共享内存写入文件
- C++类似于 std::vector / boost::array 的文件内存映射容器