Fehler beim Entladen einer DLL
-
Hallo!
Ich habe eine DLL geschrieben, in der unter anderem folgender Code steht:
typedef std::map<HANDLE, wchar_t*> THandleList; THandleList HandleList; int WINAPI DllEntryPoint(HINSTANCE, unsigned long reason, void*) { if(reason==DLL_PROCESS_DETACH) { THandleList::iterator Handle=HandleList.begin(); while(Handle!=HandleList.end()) { delete [] (*Handle).second; Handle++; } } }Die DLL wird von mehreren Prozessen verwendet.
HandleList werden über exportierte Funktionen neue Einträge hinzugefügt. Für Handle->second wird dabei, mittels new wchar_t[...], dynamisch Speicher angefordert.
Nun wollte ich sicherstellen, dass dieser Speicher beim entladen der DLL wieder freigegeben wird.
Nur verursacht obiger Code beim Entladen der DLL (beim Zugriff auf *(Handle).second) "einen Fehler" (mehr möchte Windows mir dazu nicht verraten) unter Windows ME. Unter WinXP jedoch bekomme ich keine Fehlermeldung.Wäre nett, wenn jemand mir helfen könnte den Fehler zu finden.
-
Ich habe die Definition von THandleList geändert in:
typedef std::map<HANDLE, std::wstring> THandleList;Die Destruktoren der wstrings werden doch beim Entladen der Dll automatisch aufgerufen und somit der gesamte belegte Speicherplatz wieder freigegeben?
Oder mus man da noch etwas beachten?