Я хочу писать измененные сектора по объему в растровом изображении. Я не думаю, что это полезно использовать в битовой карте памяти, потому что громкость может быть чрезвычайно большой, и большой объем оперативной памяти будет постоянно занят. Я думаю, что файловое растровое изображение (битмап в файле на диске) будет оптимальным. Снижение производительности будет значительно смягчено менеджером кэшей Windows. В Windows есть много классов для работы с битовыми картами памяти (бит-массив), но я не могу найти готовые к использованию реализации файловых растровых изображений. Например, мне нужен void, который может установить некоторые бит (от n до k) в этом файле. Может писать, но я предпочитаю использовать готовый lib. Вы знаете некоторые подпрограммы, apis или libs для этого? Я принимаю c или c++, режим пользователя или ядро.
EDIT: Теперь, когда вы сказали, что размер вашего растрового изображения составляет 2 ^ 32 бит, просто используйте нормальное распределение. С 64-битными процессами выделение GB не является проблемой.
Во-первых, я предполагаю, что вы используете 64 бит. Если нет, переключитесь, так как это упрощает работу при работе с большими файлами.
Если растровое изображение больше, чем разумно хранить в файле страницы (> 20-50 ГБ), используйте файл с сохраненной памятью, иначе просто используйте нормальное распределение. Файл с отображением памяти обеспечивает преимущества хранения данных в памяти, но без недостатка требующих больших объемов пространства подкачки, поскольку файл используется как отдельный файл страницы.
Если файл достаточно мал для размещения в вашем адресном пространстве (128 ТБ на 64 бит), тогда вы можете просто отобразить весь файл, в то время как если он больше, вам просто нужно отобразить в той части, в которой вы работаете.
О том, как сопоставить файл в памяти, см. По адресу: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366537(v=vs.85).aspx.