VirtualAlloc问题为批量文件读取分配内存

时间:2011-04-26 21:44:36

标签: c windows winapi

我试图将二进制文件中的一些数据读入用VirtualAlloc分配的缓冲区。 问题是,我得到一个“糟糕的Pr”问题,不能执行恐惧。 这是我的代码:

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);
恐惧 - 失败。 我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分: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);