Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.043 c
11-1068798502
Ал
2003-11-14 11:28
2004.04.11
Bitmap.LoadFromStream для bmp, сделанных в разных программах


4-1075186164
barby
2004-01-27 09:49
2004.04.11
отловить нетсенд


6-1076087886
Djon007
2004-02-06 20:18
2004.04.11
Как превратьть это в робочее состояние?


1-1080037645
Pa5ha
2004-03-23 13:27
2004.04.11
поиск строки в строке


14-1079337120
Piter
2004-03-15 10:52
2004.04.11
Новый клиент для этого форума - Magic Forum beta2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский