<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Fehler beim Entladen einer DLL]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine DLL geschrieben, in der unter anderem folgender Code steht:</p>
<pre><code class="language-cpp">typedef std::map&lt;HANDLE, wchar_t*&gt; 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++;
        }
    }
}
</code></pre>
<p>Die DLL wird von mehreren Prozessen verwendet.</p>
<p><em>HandleList</em> werden über exportierte Funktionen neue Einträge hinzugefügt. Für <em>Handle-&gt;second</em> wird dabei, mittels <em>new wchar_t[...]</em>, dynamisch Speicher angefordert.</p>
<p>Nun wollte ich sicherstellen, dass dieser Speicher beim entladen der DLL wieder freigegeben wird.<br />
Nur verursacht obiger Code beim Entladen der DLL (beim Zugriff auf *(<em>Handle).second</em>) &quot;einen Fehler&quot; (mehr möchte Windows mir dazu nicht verraten) unter Windows ME. Unter WinXP jedoch bekomme ich keine Fehlermeldung.</p>
<p>Wäre nett, wenn jemand mir helfen könnte den Fehler zu finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/143489/fehler-beim-entladen-einer-dll</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 01:59:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/143489.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Apr 2006 00:36:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler beim Entladen einer DLL on Sun, 09 Apr 2006 00:36:50 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine DLL geschrieben, in der unter anderem folgender Code steht:</p>
<pre><code class="language-cpp">typedef std::map&lt;HANDLE, wchar_t*&gt; 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++;
        }
    }
}
</code></pre>
<p>Die DLL wird von mehreren Prozessen verwendet.</p>
<p><em>HandleList</em> werden über exportierte Funktionen neue Einträge hinzugefügt. Für <em>Handle-&gt;second</em> wird dabei, mittels <em>new wchar_t[...]</em>, dynamisch Speicher angefordert.</p>
<p>Nun wollte ich sicherstellen, dass dieser Speicher beim entladen der DLL wieder freigegeben wird.<br />
Nur verursacht obiger Code beim Entladen der DLL (beim Zugriff auf *(<em>Handle).second</em>) &quot;einen Fehler&quot; (mehr möchte Windows mir dazu nicht verraten) unter Windows ME. Unter WinXP jedoch bekomme ich keine Fehlermeldung.</p>
<p>Wäre nett, wenn jemand mir helfen könnte den Fehler zu finden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1033560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1033560</guid><dc:creator><![CDATA[dllFrager]]></dc:creator><pubDate>Sun, 09 Apr 2006 00:36:50 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Entladen einer DLL on Sun, 09 Apr 2006 19:14:59 GMT]]></title><description><![CDATA[<p>Ich habe die Definition von <em>THandleList</em> geändert in:</p>
<pre><code class="language-cpp">typedef std::map&lt;HANDLE, std::wstring&gt; THandleList;
</code></pre>
<p>Die Destruktoren der <em>wstring</em>s werden doch beim Entladen der Dll <strong>automatisch</strong> aufgerufen und somit der gesamte belegte Speicherplatz wieder freigegeben?<br />
Oder mus man da noch etwas beachten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034081</guid><dc:creator><![CDATA[dllFrager]]></dc:creator><pubDate>Sun, 09 Apr 2006 19:14:59 GMT</pubDate></item></channel></rss>