我想將二進制文件加載到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')。 –
你有沒有試過讓你的緩衝區'靜態'?這將分配數據段中的空間而不是堆棧 –