Я пытаюсь использовать boost для сопоставления файла с памятью, имеющей 3 поплавки на строку (x, y, z координаты точек). Я пытаюсь сохранить данные в виде cl_float3 (для openCL), но, похоже, это не сработает. Это мой код:Memory-mapping 2D-массив с использованием boost
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();
}
Ошибка при чтении ошибки при нарушении чтения при попытке использовать массив данных. Любая помощь?
Это действительно «3 плавает в строку», или это «3 ASCII-кодированный символьных строк, представляющих приближенное значение с плавающей запятой в строку» - т.е. это бинарное 4-байтовое представление с плавающей точкой, или читаемое человеком текстовое представление типа «3.141593»? – twalberg
Да, я попробовал необработанный двоичный файл в качестве ввода, и он сработал. – shunyo