|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.03.2017, 23:12 | #1 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
Передача структуры с динамическим массивом между процессами
Доброго всем времени суток!
Нужно передать структуру от одного процесса другому (суть между двумя не связанными программами). Делаю через FileMapping. Если структура содержит массивы фиксированной длины, то все замечательно работает. Вот рабочий код: Struct.h - общий для Process1.cpp и Process2.cpp Код:
Код:
Код:
Ниже привожу реализацию кода: Struct.h - общий для Process1.cpp и Process2.cpp Код:
Код:
Реализация Process2.cpp не изменилась: Код:
1. Почему Process2 перестает видеть данные массива pBuf->DataArray если память для него выделяется динамически? 1. Надо ли как-нибудь дополнительно описывать массив DataArray в Process2? С одной стороны, мне казалось, что если память под него выделена в Process1, то с помощью MapViewOfFile в Process2 я должен иметь возможность все просматривать. С другой стороны, понятно, что Process2 (из Struct.h) знает только вид структуры и то, что вторым ее элементом является указатель на тип double, больше ничего... Как тогда правильно сделать? Пожалуйста, помогите разобраться Последний раз редактировалось Homa_1983; 29.03.2017 в 23:59. |
30.03.2017, 02:59 | #2 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Цитата:
Цитата:
|
||
30.03.2017, 21:06 | #3 | ||
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
Цитата:
А MapViewOfFile лишь связывает проекцию с адресным пространсвом процесса через указатель. Поэтому какая разница какой массив по сути? Я вот этого не понимаю Цитата:
|
||
30.03.2017, 21:19 | #4 | |
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
Цитата:
Последний раз редактировалось Homa_1983; 30.03.2017 в 21:25. |
|
31.03.2017, 06:04 | #5 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Цитата:
Проекция это файл, расположеный с 0 до 150 адреса. И, естественно, в процессе2 замаплены адреса от 0 до 150. Теперь вы пишите туда указатель на линамическую память с 1110 адреса, где процесс2 ее возьмет? Если не понятно, рпедставьте, что у вас общение не в реальном режиме. Просто первый1 процесс записывает реальный файл на диск, закрывается, а потом второй процесс2 читает его с диска... |
|
31.03.2017, 11:02 | #6 |
Пользователь
Регистрация: 14.10.2011
Сообщений: 29
|
Понял. Спасибо.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Взаимодействие между процессами. | JPCool | Win Api | 2 | 23.01.2016 18:26 |
Взаимодействие между процессами | СветОК | Операционные системы общие вопросы | 0 | 17.12.2012 16:06 |
Проблемма с динамическим массивом | Arassir | Помощь студентам | 3 | 15.02.2009 12:37 |
Разница между динамическим массивом и нединамическим. | Stager | Общие вопросы C/C++ | 1 | 05.01.2009 22:32 |
Работа с динамическим массивом | sand | Общие вопросы C/C++ | 3 | 22.08.2008 12:48 |