采用标准的Windows应用程序.它使用LoadLibrary加载DLL来调用其中的函数(我们称之为DLL_A).该函数加载另一个DLL(我们称之为DLL_B).应用程序现在使用FreeLibrary卸载DLL_A DLL,因为它不再需要它.
问题是: DLL_B是否仍在内存中并加载?
这是我可以依赖的东西,还是没有文件记录?
号码DLL_B
不会被卸下.进行的LoadLibrary()
调用DLL_A
将增加负载计数DLL_B
.由于没有相应的FreeLibrary()
调用DLL_B
,refcount不会变为零.
从LoadLibrary()文档:
系统在所有已加载的模块上维护每个进程的引用计数.调用LoadLibrary会增加引用计数.调用FreeLibrary或FreeLibraryAndExitThread函数会减少引用计数.系统在其引用计数达到零或进程终止时(无论引用计数如何)卸载模块.