Я пытаюсь создать большие файлы (4-8 ГБ) с кодом C.
Теперь я использую fopen()
с параметрами 'wb'
, чтобы открыть двоичный файл файла и fwrite()
в цикле for
для записи байтов в файл. Я пишу один байт в каждой итерации цикла. Нет проблем, пока файл не станет больше или равен 4294967296 байт (4096 МБ). Это похоже на ограничение памяти в 32-битной ОС, потому что когда он записывает этот открытый файл, он все еще находится в ОЗУ. Я прав? Симптом заключается в том, что созданный файл имеет меньший размер, чем я хочу. Разница составляет 4096 МБ, например. когда я хочу 6000 МБ файла, он создает 6000 МБ - 4096 МБ = 1904 МБ файла.
Не могли бы вы предложить другой способ выполнить эту задачу?
С уважением:)
Часть кода:
unsigned long long int number_of_data = (unsigned int)atoi(argv[1])*1024*1024; //MB
char x[1]={atoi(argv[2])};
fp=fopen(strcat(argv[3],".bin"),"wb");
for(i=0;i<number_of_data;i++) {
fwrite(x, sizeof(x[0]), sizeof(x[0]), fp);
}
fclose(fp);