内存映射使用boost的2D数组

时间:2013-06-18 14:54:29

标签: c++ boost memory-mapping

我正在尝试使用boost将文件映射到每行有3个浮点数(点​​的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();
}

当我尝试使用数据数组时,它为读取违规提供访问冲突错误。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

您在打开文件后立即关闭该文件。我没有阅读boost的内存映射文件的文档,但您可能需要保持文件处于打开状态。

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