Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Память, 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.055 c
11-1067408356
<Falcon>
2003-10-29 09:19
2004.04.11
ControlCount &amp; KOL


1-1080018846
LinOS
2004-03-23 08:14
2004.04.11
как открыть html файл в web браузере ОС.


6-1079354227
aser
2004-03-15 15:37
2004.04.11
почта с Mail.ru - как ее получять/отправить по http по 80 порту


1-1080161869
wezz
2004-03-24 23:57
2004.04.11
Горячие клавиши


3-1079084140
Nikolai_S
2004-03-12 12:35
2004.04.11
Добавление полей типа fkCalculated к открытой TADOQuery