Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизПамять, EXE, DLL Найти похожие ветки
← →
Qwer (2004-03-25 16:25) [0]Хочу спросить: Как сделать так, чтобы можно было выделить память (GetMem(p,1024)) в программе, а затем освободить её в DLL(FreeMem(p,1024)). Если просто так сделать, то будет исключение.
← →
Digitman © (2004-03-25 16:32) [1]корректных вариантов не менее чем два :
1. Оба проекта собираются с опцией Build With Run-Time Packages
2. Оба проекта в USES первой же позицией имеют модуль ShareMem
1-й вариант предпочтительней, когда речь идет о разработке обоих проектов не иначе как в среде Делфи
← →
Qwer (2004-03-25 16:36) [2]ShareMem не помогает... проверял...
← →
Юрий Зотов © (2004-03-25 16:43) [3]IMHO, если такая необходимость возникла, то это следствие недостаточно продуманной структуризации. Чем это вызвано?
← →
hexone © (2004-03-25 16:46) [4]IMalloc + CoTaskMemAlloc + CoTaskMemFree
← →
Qwer (2004-03-25 16:48) [5]ну, например, прога разбита на модули. один модуль, например, декодирует какие-то данные. параметров 4: указатель1, размер1, указатель2, размер2(тут легко догадаться что к чему). под второй указатель память выделяется в либе. как её освободить в проге? обращаться к либе? не очень-то удобно... Хочется чтобы можно было работать с указателями свободно... я когда-то видел такой код...
← →
TUser © (2004-03-25 17:36) [6]Не очень понятно о чем речь, но если оно действительно надо - тогда из проги вызывать в DLL некую функцию, которая освобождает память.
← →
KSergey © (2004-03-25 18:45) [7]> Qwer (25.03.04 16:48) [5]
Надо просто и второй буфе выделять в приложении.
Если размер заранее не известен - можно либо в либе сделать ф-цию вычисления требуемого (ели это просто, т.е. не надо декодировать), либо сделать CallBack ф-цию, которая будет вызываться из либы для выделения приложением дополнительной памяти, если ее не хватает.
Вижу еще вариант: либа декодирует, сваливает в свой буфер. (второй буфер изначально в ф-цию декодирования не передается). Потом приложение спрашивает: каков вышел буфер? либа отвечает, прога расколбасивает требуемый объем и говорит либе "по этому указателю копирни ка мне свои данные". Или даже просто либа возвращает указатель на свой буфер, прога копирует - а потом вызывает ф-цию типаFree (либа свой буфер освобождает).
Понятно, что двойной расход...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c