我想将二进制文件加载到char数组中。我的代码:读取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')。 –
你有没有试过让你的缓冲区'静态'?这将分配数据段中的空间而不是堆栈 –