Можно ли увеличить размер разделяемой памяти после создания с помощью API "CreateFileMapping"?
Я делю данные памяти между несколькими процессами в соответствии с дизайном.
В соответствии с проектом приложению требуется несколько файлов памяти, как для каждого процесса требуется один файл карты памяти. Но некоторым процессам требуется меньше отображаемого файла памяти, например, он может быть 10 КБ или меньше. и некоторые процессы требуют более 1 МБ памяти. как только задача процессов закончится, я буду использовать тот же файл отображения памяти для какого-то другого процесса.
В этом сценарии, как я могу увеличить размер отображаемого в памяти файла на основе запроса процесса. Как когда-то я создаю отображенный в память файл, используя CreateFileMapping как я могу увеличить размер памяти или уменьшить размер.
Также у меня есть еще один дополнительный вопрос, как очистить эти данные, не закрывая этот файл сопоставленной памяти. Пожалуйста, поделитесь, если кто-нибудь знает.
Заранее большое спасибо. хара
2 ответа
Нет - вы не можете увеличить сопоставление после создания (см. http://msdn.microsoft.com/en-us/library/windows/desktop/aa366537%28v=vs.85%29.aspx)!
Размеры, которые вы описываете, не кажутся проблематичными, поэтому я бы просто выбрал один "достаточно большой размер".
Для очистки данных вы можете использовать, например, memset ()
(см. http://msdn.microsoft.com/en-us/library/1fdeehz6.aspx или http://www.cplusplus.com/reference/clibrary/cstring/memset/) или ZeroMemory()
(который является просто сопоставлением макроса Windows API с memset
).