Как освободить ресурсы, когда DLL выгружена или процесс завершается - PullRequest
0 голосов
/ 09 ноября 2010

Когда загружается моя MFC DLL, создается экземпляр класса в dllmain.Как освободить ресурсы, выделенные для этого, когда DLL выгружается или ее процесс завершается?Будет ли это сделано автоматически системой?Я использую Visual Studio 2008. Спасибо.

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Замените ваш new -ing и сохранение указателя в глобальной переменной T* глобальной переменной T.

Это позволяет автоматическим машинам C ++ делать всю работу за вас.

При выгрузке DLL деструктор вызывается автоматически.

Примечание: поддержка загрузки и выгрузки DLL из нескольких потоков может быть более сложной.

Приветствия & hth.,

2 голосов
/ 09 ноября 2010

в вашей главной функции dll просто обрабатывает случай для 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 (), поэтому вы хотите сохранить все, что вы делаете там оченьбыстро и просто.

...