Главная страница
    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
3-1079002259
СержК
2004-03-11 13:50
2004.04.11
Можно ли устанавливать InterBase на MSSQL server 2003 ?


7-1075224980
Дмон
2004-01-27 20:36
2004.04.11
Печать в 9х и в W2K


14-1079365212
Soft
2004-03-15 18:40
2004.04.11
За явку на экзамен без меча...


14-1079201990
lak-b
2004-03-13 21:19
2004.04.11
интересный вопрос


6-1079554274
DEMON_XXX
2004-03-17 23:11
2004.04.11
Как получить e-mail адреса из контактной книги Outlook





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский