![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Структура содержит строку
Когда структуру передаю по именованному каналу, строка приходит пустой, хотя остальные элементы структуры, не указатели, доходят нармально. Убирал освобождение памяти, все равно не работает. Как передать указатель, чтобы значение сохранилось? Спасибо. |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
NiJazz
Покажи плз. как ты её туда засовываешь? --------------------
|
|||
|
||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
NiJazz на сколько я понимаю ты передаешь указатель на строку по именованному каналу в другой процесс, или грубо говоря, на другой комп, так делать нельзя, потому, что один процесс не может напрямую обратиться к адресному пространству другого процесса. Если тебе надо передать строку, то можешь использовать массив:
|
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
Вообщето можно, но надо быть уверенным, что процессы запущенны на одном компе NiJazz Между чем (компами, процессами, потоками) ты передаеш этот указатель ? |
|||
|
||||
| S.A.P. |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
Это сообщение отредактировал(а) Perchilla - 24.10.2004, 13:40 |
||||
|
|||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
Да может он, надо тока сегменты заранее выяснить |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Чего-то вы усложняете
Идентификаторы процессов, адресные пространства и всё такое -- это, конечно, очень хорошо, но в данном случае -- как из пушки по воробьям...
Работоспособность не проверял, но вроде всё нормально... Только нужно ещё не забыть после передачи данных удалить массив, полученный из Serialize Добавлено @ 14:50 Тут в Deserialize я предположил, что входным параметром является массив, созданный через new[], и содержащий данные полученные через канал. А в канал, естественно, был заслан массив, возвращённый функцией Serialize Это сообщение отредактировал(а) Дрон - 24.10.2004, 14:52 -------------------- Да. Именно так. |
|||
|
||||
| S.A.P. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2664 Регистрация: 11.6.2004 Репутация: 9 Всего: 71 |
NiJazz если размер строки не велик, ИМХО удобнее строку держать в шаровом массиве.
Это сообщение отредактировал(а) Perchilla - 24.10.2004, 16:02 |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
А про конструктор копирования, случаем, не забыли?
|
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Там не в конструкторе копирования дело Это ведь не присваивание, а передача данных на другой компьютер. Фактически моя пара функций Serialize и Deserialize и выполняет функции конструктора копирования. -------------------- Да. Именно так. |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Дрон
не ну мало ли, может по ссылке объект пихают. И симптомы похожие. Да еще не мешало бы выравнивание структуры добавить. |
|||
|
||||
| Дрон |
|
||||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Симптомы-то похожие Но здесь прикол в том, что при передаче указателя на другой комп сама строка-то не передаётся! А вот Perchilla предожил относительно простой и правильный выход. Забить постоянный массив внутрь структуры. -------------------- Да. Именно так. |
||||
|
|||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Ай-ё! Ну так че тогда голову ломать, конечно неправильно. Надо не указатель передавать, ага, типа, как Perchilla предложил. |
|||
|
||||
| Adil' |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
-------------------- Удачи |
|||
|
||||
| Mad |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Эксперт Сообщений: 656 Регистрация: 18.10.2004 Где: Одесса Репутация: 7 Всего: 19 |
Вобще пердачу строки лучше делать следующим образом (псевдокод)
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |