2011-04-25 115 views
3

我有一個小文件,我走了過來,並計算字節數在它:如何將文件的內容複製到虛擬內存中?

while(fgetc(myFilePtr) != EOF) 
{ 

    numbdrOfBytes++; 

} 

現在我分配了相同大小的虛擬內存:

BYTE* myBuf = (BYTE*)VirtualAlloc(NULL, numbdrOfBytes, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); 

我現在想複製我的文件內容轉換成nyBuf。我該怎麼做?

謝謝!

+0

在Linux中,有一個很好的系統調用名爲'mmap'會爲你做到這一點,而不必專門分配內存。有可能Windows有類似的東西。 – Omnifarious 2011-04-25 12:30:57

+1

以獲得文件大小,您可以:'fseek(fp,0L,SEEK_END);長尺碼= ftell(fp);倒帶(fp);' – iCoder 2011-04-25 12:32:08

回答

3

在大綱:

FILE * f = fopen("myfile", "r"); 
fread(myBuf, numberOfBytes, 1, f); 

這個假定緩衝區足夠大,以容納該文件的內容。

+0

很酷,謝謝 – 2011-04-25 12:18:18

2

試試這個:

#include <fstream> 
#include <sstream> 
#include <vector> 

int readFile(std::vector<char>& buffer) 
{ 
    std::ifstream  file("Plop"); 
    if (file) 
    { 
     /* 
     * Get the size of the file 
     */ 
     file.seekg(0,std::ios::end); 
     std::streampos   length = file.tellg(); 
     file.seekg(0,std::ios::beg); 

     /* 
     * Use a vector as the buffer. 
     * It is exception safe and will be tidied up correctly. 
     * This constructor creates a buffer of the correct length. 
     * 
     * Then read the whole file into the buffer. 
     */ 
     buffer.resize(length); 
     file.read(&buffer[0],length); 
    } 
} 
相關問題