2011-04-26 2 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

+0

모든 반환 값을 확인하고 GetLastError를 확인하십시오. –

답변

2

MEM_RESERVEMEM_COMMIT을 모두 전달해야합니다. 그리고 BYTE *이 아닌 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

+0

@aaaa이 답을 올바른 것으로 표시하십시오. – geocar

관련 문제