Я пытаюсь загрузить двоичный файл в массив символов. Мой код:Чтение бинарного файла 300MB для массива char
int MAX_FILE_SIZE = 1 000 000
FILE *f;
char buffer[MAX_FILE_SIZE];
f = fopen("sample.bin", "rb"); //sample.bin is 300MB binary file
if (f)
n = fread(buffer, sizeof(char), MAX_FILE_SIZE, f);
Он работает, пока не установлено MAX_FILE_SIZE
в чем 1M ничего большего, потому что я получаю program.exe has stopped working
. Если я думаю, что правильно загружать все sample.bin
в память, я должен установить MAX_FILE_SIZE
в ~ 300M. Как я могу это сделать?
Это не проверяемый примера, но я подозреваю, что вы бежите из stackspace. – EOF
Используйте некоторую выделенную кучу память (например, 'malloc'). –
Вы пробовали сделать свой буфер 'static'? Это будет выделять пространство в сегменте данных вместо стека. –