DLL内存管理问题? 涉及Extended Mfc DLL/ imlicit explicit link等
DLL内存管理?
首先是一个 MFC扩展DLL,导出一个C++类。该DLL称为B
其次是一个 扩展DLL(或者regular MFC DLL)A,这个DLL导出几个函数. A隐式连接B.
客户EXE程序,使用LoadLibrary显示调用A中的函数(间接用到了B).
Exe ----explicit---> (A DLL) ---- implicit ----> (B DLL)
问题是,A中的函数,作的事情是, new一些B导出类的对象,交给了Exe.
Exe可以使用访问这些对象,但是如果FreeLibrary之后,这些对象就不能
访问了. 我觉得奇怪的是, dll new操作的不是 caller thread所属
process的heap的吗? 怎末把DLL卸载,这些DLLnew出来的对象就不能用了
呢?
如果不FreeLibrary或者, exe也使用implicit就没有问题。