Добрый вечер, комрады
Пытаюсь вот тут настоящую магию постичь, но вот бубен дома забыл и духи меня покинули.
Ситуация: есть файл на диске (NTFS) размером в 22 гигабайта или 23,056,544,700 байтов, если верить проводнику по дебрям Windows 7 X64 с 8ГБ оперативной памяти (хотя какая раззница?)
А вот мой маленький кусочек кода показывает, что размер файла всего 1.5 гигабайта или 1.581.708.220 байт, что немного не соответствует инстине.
Вот она, моя прелесть
#include <iostream>
#include <fstream>
using namespace std;
/**
* Suppression file
*/
char * suppressionFile = "D:\\path_to_very_big_file.csv";
ifstream suppression;
unsigned __int64 suppressionLength;
/**
* Entry point
*/
int main(void) {
suppression.open(suppressionFile, ifstream::in);
if (!suppression.is_open()) {
cout << "Cannot open file" << endl;
return 1;
}
if (!suppression.seekg(0, ifstream::end).good()) {
cout << "Cannot move pointer to the end of the file" << endl;
return 1;
}
suppressionLength = suppression.tellg();
cout << suppressionLength << endl;
cin >> suppressionLength;
suppression.close();
return 0;
}
Как видно, размер я пытаюсь писать в __int64, так что нулей там точно должно хватить.
Собственно вопрос: А что такое?
Спасибо! :)
P.S.: С маленькими файлами все прекрасно работает — проверял.