1

我正在尝试使用 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();
}

当我尝试使用数据数组时,它会因读取冲突而出现访问冲突错误。有什么帮助吗?

4

1 回答 1

2

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

if (file.is_open()) {
    data = (cl_float3*) file.data();
    file.close(); // remove this line
}
于 2013-06-18T15:18:32.713 回答