2D-массив отображения памяти с использованием boost

Я пытаюсь использовать 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

Решение

Вы закрываете файл, как только открываете его. Я не читал документацию для файлов, отображаемых в памяти Boost, но вам, вероятно, нужно оставить файл открытым.

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]