如何在卸载DLL或进程终止时释放资源

时间:2010-11-09 15:11:07

标签: c++ visual-studio-2008 dll mfc resources

加载我的MFC DLL时,会在dllmain中实例化一个类。在卸载DLL或其进程完成时,如何释放为此分配的资源?这是由系统自动完成的吗?我正在使用Visual Studio 2008.谢谢。

2 个答案:

答案 0 :(得分:2)

在你的dll main函数中只处理DLL_PROCESS_DETACH的情况。

BOOL WINAPI DllMain( HMODULE hDll, DWORD dwReason, PVOID pvReserved ) {
  switch ( dwReason ) {
    case DLL_PROCESS_DETACH:
      // the dll is being detached, do you clean up here
      break;
  }
}

请记住,在DllMain()内部有些事情是不可能的,所以你想要保持你所做的一切非常快速和简单。

答案 1 :(得分:2)

使用全局new变量替换T* - 并在全局T变量中存储指针。

这让自动C ++机器为你工作。

在DLL卸载时,会自动调用析构函数。

注意:支持从多个线程加载和卸载DLL可能会比较困难。

干杯&第h。,