Как.
Я работаю в родной винде. Тем не менее, я хочу написать функцию, прототип которой выглядит примерно так:
void getData(uint8_t* p, std::string const& fn, size_t off,
size_t s, boost::function<void()> const& F);
Итак, у меня есть кусок памяти, предварительно выделенный в куче (с новым). У меня есть файл на диске. Я хотел бы указать указатель на свой кусок памяти ("p"), имя файла ("fn") и смещение в нем ("off"), размер ("s") и обратный вызов ("F") . Я бы хотел, чтобы подпрограмма в конечном итоге вызывала «F», когда моя память «p» была заполнена байтами «s» из файла «fn» со смещением «off». Я гарантирую, что «p», «s» и «off» выровнены с некоторой предопределенной степенью числа 2, но я бы не хотел, чтобы происходило копирование, которого можно было бы избежать. В идеале, данные с диска будут передаваться напрямую в мое местоположение.
Я изучил отображение файла в памяти, но для этого потребуется скопировать данные из отображаемой области в мой «p». Нет ли более быстрого способа сделать это?