Как скопировать содержимое файла в виртуальную память?
У меня есть небольшой файл, я просматриваю его и подсчитываю количество байтов в нем:
while(fgetc(myFilePtr) != EOF)
{
numbdrOfBytes++;
}
Теперь я выделяю виртуальную память того же размера:
BYTE* myBuf = (BYTE*)VirtualAlloc(NULL, numbdrOfBytes, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
Теперь я хочу скопировать содержимое моего файла в nyBuf. Как мне это сделать?
Спасибо!
3 ответа
В общих чертах:
FILE * f = fopen( "myfile", "r" );
fread( myBuf, numberOfBytes, 1, f );
это предполагает, что буфер достаточно большой, чтобы вместить содержимое файла.
Также рассмотрите возможность использования файлов, сопоставленных с памятью.
Попробуй это:
#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);
}
}