[решено] Передача управления над блоком данных из dll в приложение?
Есть dll которая динамически линкуется к программе. В самой dll выделяется блок памяти и указатель на этот блок передается программе. Проблема в том, что если после этого выгрузить dll то блок памяти будет освобожден. Можно ли как ни будь передать блок памяти из dll в программу, что бы при выгрузке dll этот блок не удалялся? Либо можно ли как ни будь создать блок из кода расположенного в dll в области памяти основной программы?
P.S. Пишу под Delphi, не знаю, есть ли подобная «проблема» в других языках.
Можно передать в dll'ку указатель на аллокатор из основной программы.
Как я понимаю — это не помогает. Я создаю класс занимающийся выделением памяти в основной программе и как раз передаю указатель на этот класс в dll. Dll при необходимости вызывает этот класс и просит его выделить память. И как я понимаю, память класс выделяет из области dll, а не основной программы, так как в случае выгрузки dll память таких блоков становится не валидной.
Либо выделять память в системной куче (HeapAlloc и HeapFree).