2011-04-26 51 views
2

我試圖從二進制文件讀取一些數據到VirtualAlloc分配的緩衝區。 問題是我得到一個「不良Pr」問題,無法執行fread。 這裏是我的代碼:VirtualAlloc問題爲讀取批量文件分配內存

fseek(myfile,0, SEEK_END); 
DWORD FileSize = ftell(myfile); 
fseek(myfile,0, SEEK_SET); 
BYTE *buf = (BYTE *)VirtualAlloc(NULL,FileSize,MEM_RESERVE, PAGE_EXECUTE_READWRITE); 
fread(buf,sizeof(BYTE),1,myfile); 

fread - 失敗。 我做錯了什麼?

謝謝!

+1

什麼錯誤代碼,它會失敗? – James 2011-04-26 21:55:05

+0

檢查所有返回值,同時檢查GetLastError。 – 2011-04-27 15:33:42

回答

2

您需要通過MEM_RESERVEMEM_COMMIT。你需要使用一個BYTE *而不是一個​​

fseek(myfile,0, SEEK_END);  
DWORD FileSize = ftell(myfile);  
fseek(myfile,0, SEEK_SET);  
BYTE * buf = (BYTE*)VirtualAlloc(NULL,FileSize,MEM_RESERVE | MEM_COMMIT, PAGE_EXECUTE_READWRITE); 
fread(buf,FileSize,1,myfile); 
+0

謝謝 - 這個伎倆! – aaaa 2011-04-26 21:58:12

+0

@aaaa然後標記此答案爲正確的。 – geocar 2011-06-08 10:36:20