c - VirtualAlloc problem tildeling af hukommelse til massefil læsning

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at læse nogle data fra en binær fil til en buffer, der er allokeret med VirtualAlloc.
Problemet er, at jeg får et 'dårligt Pr' problem og kan ikke udføre en fread.
Her er min kode:


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 - fejler.
hvad laver jeg forkert


Tak!

Bedste reference


Du skal passere både MEM\_RESERVE og MEM\_COMMIT. Og du skal bruge en BYTE *, ikke en 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);