Чтение бинарного файла - PullRequest
1 голос
/ 31 марта 2020

У меня проблема с сегментацией при чтении двоичного файла.

Размер файла составляет 16859136 байт, содержит двойные значения, но на самом деле я могу прочитать около 4214784 байт (в 4 раза меньше).

I используйте следующий код c ++.

const int size = 6*28*28*28*4*4; // 16859136(bytes) = size * 8(bytes)  
double data[size];

ifstream in;
in.open("/path/to/file", std::fstream::binary);
if (in.is_open()) { cout << "File is open!\n"; }

in.read((char *) &data, sizeof(data));
cout << in.gcount() << " bytes read\n";

in.close();

Вывод:

Ошибка сегментации

PS: Возможно, существует какая-то синтаксическая ошибка ...

1 Ответ

2 голосов
/ 31 марта 2020

Следующие строки выделяют слишком большое пространство в вашем стеке:

const int size = 6*28*28*28*4*4; // 16859136(bytes) = size * 8(bytes)  
double data[size];

вместо этого рассмотрите выделение кучи:

std::vector<double> data(6*28*28*28*4*4);
...