Форум: "Основная";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];
ВнизОбласть памяти для двух приложений Найти похожие ветки
← →
Dimaxx (2003-12-03 01:46) [0]Сабж. Надоть создать область, чтобы главное приложение и библиотеки могли писать и читать в нее, менять размер области и т.п. Если быть еще точнее, то надо что-то типа MemoryStream. Киньте примерчиком, плз.
PS: Прошу не пинать, если кому вопрос покажется банальным. Я с такими вещами дел не имел, а вот теперь понадобилось.
← →
TUser (2003-12-03 05:57) [1]Думаю, что надо сделать dll, которую будут использовать все модули твоей проги. Память у dll одна, вот там и создавай TMemoryStream.
← →
Radionov Alexey (2003-12-03 07:55) [2]>TUser © (03.12.03 05:57) [1]
Про "память у DLL" - неверно
>Dimaxx © (03.12.03 01:46)
Используй MMF (Memory Mapped Files). Описание в Win32SDK
← →
Amoeba (2003-12-03 13:14) [3]В кладовке лежит TMMFStream
← →
Dimaxx (2003-12-04 01:20) [4]Спасибочки!!...
← →
nikkie (2003-12-04 01:30) [5]>чтобы главное приложение и библиотеки могли писать и читать в нее
памяти у "приложения" нет. память есть у процесса. если ты используешь dll, то они загружаются в тот же процесс, поэтому адресное пространство то же самое. MMF нужен, если надо общаться 2 разным процессам.
← →
Dimaxx (2003-12-05 01:22) [6]Нихрена! Я гружу статически dll"ку, запрашиваю в главной программе блок памяти, заполняю и передаю указатель в dll. Читает превосходно, но стоит записать туда что-либо, "Access violation..." в dll. Приехали, как говорится.
← →
Юрий Зотов (2003-12-05 01:54) [7]> Dimaxx © (05.12.03 01:22) [6]
nikkie совершенно прав. А Ваше AV - просто следствие ошибки, либо непонимания деталей. При вызове очень многих функций API мы делаем абсолютно то же самое (Exe выделяет буфер и передает в DLL его адрес, а DLL в этот буфер пишет) - и ведь не возникает никаких проблем, не так ли?
ММФ для Вашей задачи - это стрельба из пушки по воробьям.
← →
Юрий Зотов (2003-12-05 02:08) [8]> TUser © (03.12.03 05:57) [1]
> Думаю, что надо сделать dll, которую будут использовать все
> модули твоей проги.
А что такое "модуль программы"?
> Память у dll одна, вот там и создавай TMemoryStream.
У DLL вообще нет никакой памяти. Но если бы даже она и была, то передавать объект из DLL в Exe (или наоборот) - не есть хорошо.
> Radionov Alexey © (03.12.03 07:55) [2]
> Amoeba (03.12.03 13:14) [3]
Да, действительно, в теме человек написал "для двух приложений". Однако же, из текста вопроса ясно, что речь на самом деле идет только об одном процессе. Тогда зачем ММФ? Не проще ли в одной из DLL выделить буфер и экспортировать функции доступа к нему?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c