Главная страница
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.062 c
14-1079201990
lak-b
2004-03-13 21:19
2004.04.11
интересный вопрос


14-1079423649
Gorlum
2004-03-16 10:54
2004.04.11
Помогите настроить


1-1080295137
Хэтч
2004-03-26 12:58
2004.04.11
Как сделать, чтобы при нажатии на Button рисовалась стрелочка ?


3-1081989338
Смертник
2004-04-15 04:35
2004.04.11
Проблема с БД.


1-1079860877
Melnicov Ivan
2004-03-21 12:21
2004.04.11
Как пользоваться несколькими формами?