【问题标题】:C++ Memory Mapped File ImplementationC++ 内存映射文件实现
【发布时间】:2011-09-12 16:31:16
【问题描述】:

我在实现内存映射文件时没有问题。问题是。假设这会返回一个有效的内存视图。

void* pBuf = MapViewOfFile(hMapFile,  
        FILE_MAP_WRITE,
        0,                   
        0,      
        0);

除了使用 memcpy 向它提供数据之外,我还有其他选择吗?例如,我可以告诉我的应用程序在其中存储数据吗?我真的想要像 char* buffer = new char[1073741824] 这样的东西,其中 new 将数据放在内存映射文件中。这似乎合乎逻辑。还是我必须编写一个使用 memcpy 写入内存视图的包装器?那会令人失望。

【问题讨论】:

  • 请不要在问题中写下答案 - 我已恢复您的编辑。如果你想回答这个问题,那么就这样做作为一个答案。当然,这样做没有意义,因为您有一个与您的解决方案相同的答案。

标签: c++ windows


【解决方案1】:

可能最简单的方法是使用boost memory mapped file classes,它提供了便携性的额外好处。

【讨论】:

    【解决方案2】:

    您可以使用placement new 运算符,也可以将地址转换为您想要使用的结构或类。放置 new 的好处是会调用类的构造函数。如果从那时起使用该指针,则无需复制数据,而是直接对其进行读写。

    【讨论】:

    • 最佳答案。和我一样的结论。而且它是最高效、最不臃肿的。
    猜你喜欢
    • 2011-12-31
    • 2016-12-08
    • 2020-11-06
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    相关资源
    最近更新 更多