我有一个由主机程序和一些插件组成的应用程序。插件在可以动态加载和卸载的 dll 中实现。插件的代码(在 dll 内)为对象分配内存并将指针传递给主机程序。这些对象在 dll 堆上分配,无法更改接口以使用专门的内存分配函数。
主机程序是否有办法检测对象已分配在哪个堆管理器上?我想为 dll 实现某种引用计数。只要宿主程序仍然使用 dll 的内存,就无法卸载 dll。这意味着我想从主机程序中跟踪谁(哪个插件)分配了一个内存块(保存在主机内的各种列表中的对象)。当前接口包括一个卸载 dll 的调用。此调用应安排卸载,但仅在主机使用完内存后才执行。
感谢您的任何建议。