我试图将一些数据从二进制文件读取到用 VirtualAlloc 分配的缓冲区中。 问题是我遇到了“坏 Pr”问题并且无法执行 fread。 这是我的代码:
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);
恐惧 - 失败。 我做错了什么?
谢谢!
最佳答案
您需要同时传递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);
关于c - VirtualAlloc 为批量文件读取分配内存时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5796841/