Используя пример MSDN по Creating Named Shared Memory, у меня есть несколько вопросов (примечание: имена переменного рядные которые упоминаются в примере процесса 1 в гиперссылка):Создание именованных Общих файлов память для передачи больших объемов данных
было бы возможно для копирования сообщений большой длины (т.е. szMsg.length()> 4000) в буфер (pBuf) в процессе 1?
Каков максимальный размер буфера (BUF_SIZE), разрешенный для создания объекта сопоставления файлов?
Если да, то какова связь между размером буфера, используемого для создания объекта отображения против длины сообщения. (Т.е. .. В примере, BUF_SIZE против szMsg)
Я задаю эти вопросы потому что, когда я пытаюсь скопировать сообщения длиной> 4000, он терпит неудачу с ошибками нарушения прав доступа, несмотря на увеличение buf_size
с 512 до 1024 или даже выше.
Я новичок в кодировании. Пожалуйста, объясните мне, как создать объект сопоставления файлов, который мог бы размещать сообщения большой длины.
Да, возможно использовать файлы с отображением памяти размером 4000 байт. На самом деле это вовсе не огромно. Если вы можете сделать это за один байт, вы можете сделать это за 4000, просто увеличив размер. Это тривиально. Ваш код, безусловно, неисправен каким-то образом. Знают ли, что 1024 меньше 4000? Вы цените, что буфер должен быть как минимум таким же большим, как и его содержимое? Почему вы все равно используете картографирование памяти. –
@DavidHeffernan, я понимаю, что 4000> 1024. Но я заметил, что размер этого буфера не прямо пропорционален длине сообщения. Даже если я ставлю размер буфера как 8, и я смог бы успешно скопировать сообщение до длины ~ 4000. – user3852447
@DavidHeffernan: Я могу отправить некоторые данные, которые обрабатываются в основном потоке, на другой параллельный процесс. – user3852447