У меня есть приложение, которое состоит из хост-программы и нескольких плагинов. Плагины реализованы в dll, которые можно динамически загружать и выгружать. Код плагинов (внутри dll) выделяет память для объектов и передает указатели в хост-программу. Эти объекты размещены в куче DLL, и нет никакого способа изменить интерфейс, чтобы использовать специализированную функцию выделения памяти.
Есть ли способ для хост-программы определить, на каком диспетчере кучи выделен объект? Я хочу реализовать какой-то подсчет ссылок для DLL. Пока хост-программа все еще использует память из dll, dll не может быть выгружена. Это означает, что я хотел бы отследить от программы хоста, кто (какой плагин) выделил блок памяти (объекты, которые хранятся в различных списках внутри хоста). Текущий интерфейс включает в себя вызов для выгрузки DLL. Этот вызов следует запланировать на выгрузку, но выполнить его можно только после того, как хост завершит использование памяти.
Спасибо за любые предложения.
Задача ещё не решена.
Других решений пока нет …