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