我试图将二进制文件中的一些数据读入用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);
恐惧 - 失败。
我做错了什么?
谢谢!
答案 0 :(得分:2)
您需要同时传递MEM_RESERVE
和MEM_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);