c++ - 使用 boost 的内存映射二维数组

标签 c++ boost memory-mapping

我正在尝试使用 boost 将文件映射到内存中,每行有 3 个 float (点​​的 x、y、z 坐标)。我试图将数据存储在 cl_float3 类型中(对于 openCL),但它似乎不起作用。这是我的代码:

cl_float3 *data;
boost::iostreams::mapped_file_source file;
size = 785444;    // size of the file
int numBytes = size*sizeof(cl_float)*3;
file.open(filename,numBytes);
if(file.is_open()) {
    data = (cl_float3*)file.data();
    file.close();
}

当我尝试使用数据数组时,它给出了读取冲突的访问冲突错误。有帮助吗?

最佳答案

文件一打开就关闭了。我没有阅读 boost 的内存映射文件的文档,但您可能需要让文件保持打开状态。

if (file.is_open()) {
    data = (cl_float3*) file.data();
    file.close(); // remove this line
}

关于c++ - 使用 boost 的内存映射二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17172124/

相关文章:

c - 如何在C(Windows)中访问父进程创建的内存映射文件

c++ - MDI MFC VC++如何在大型机内切换 View

c++ - 这个基数有多少位?

c++ - 可以将 &my_boost_array_variable[2] 传递给期望 void* 的 C 函数吗?

c++ - boost spirit : combining preparsing with keyword parser and with Nabialek trick

linux -/proc/self/maps 中的 "---p"权限是什么意思?

c++ - 与 OpenGL 中的矩阵堆栈混淆?

c++ - 相同指令的输出不同 - 移动和复制 ctor

c++ - 在 Xcode4 中使用 Boost

c++ - Windows CreateFileMapping : different file-mapping objects with same backed file