<?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[Probleme mit std::map]]></title><description><![CDATA[<p>Ich habe ein Problem mit std::map. In dem kurzen Testprogramm bekomme ich schon beim ersten Check in Zeile 26 einen Dump. Könnt Ihr mir sagen wo ich den Fehler mache?</p>
<pre><code>#include &quot;stdafx.h&quot;
#include &lt;ctime&gt;
#include &lt;map&gt;
#include &lt;vector&gt;
#include &lt;Windows.h&gt;
#include &lt;iostream&gt;

void foo(std::map&lt;int, std::vector&lt;float&gt;&gt;&amp; m)
{
  for (size_t i = 0; i &lt; 10; ++i)
  {
    std::vector&lt;float&gt; v;
    for (size_t j = 0; j &lt; 100; ++j)
    {
      v.push_back(GetTickCount() / static_cast&lt;float&gt;(j));
      Sleep(10);
    }
    m[i] = v;
  }
}

int _tmain(int argc, _TCHAR* argv[])
{
  std::map&lt;int, std::vector&lt;float&gt;&gt; m;

  _CrtDumpMemoryLeaks();
  for (size_t i = 0; i &lt; 10; ++i)
  {
    std::vector&lt;float&gt; v;
    for (size_t j = 0; j &lt; 100; ++j)
    {
      v.push_back(static_cast&lt;float&gt;(j) / GetTickCount());
      Sleep(10);
    }
    m[i] = v;
  }
  _CrtDumpMemoryLeaks();

  Sleep(1000);

  foo(m);
  _CrtDumpMemoryLeaks();

  return 0;
}
</code></pre>
<pre><code>'map.exe' (Win32): Loaded 'C:\Users\Andreas\Documents\Entwicklung\map\Debug\map.exe'. Symbols loaded.
'map.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Symbols loaded.
'map.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Symbols loaded.
'map.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Symbols loaded.
'map.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp120d.dll'. Symbols loaded.
'map.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120d.dll'. Symbols loaded.
Detected memory leaks!
Dumping objects -&gt;
{190} normal block at 0x0048D568, 8 bytes long.
 Data: &lt;l /     &gt; 6C FE 2F 00 00 00 00 00 
{189} normal block at 0x0048D508, 36 bytes long.
 Data: &lt;  H   H   H     &gt; 08 D5 48 00 08 D5 48 00 08 D5 48 00 01 01 CD CD 
Object dump complete.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/332669/probleme-mit-std-map</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 15:12:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332669.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 May 2015 18:17:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme mit std::map on Fri, 15 May 2015 18:17:19 GMT]]></title><description><![CDATA[<p>Ich habe ein Problem mit std::map. In dem kurzen Testprogramm bekomme ich schon beim ersten Check in Zeile 26 einen Dump. Könnt Ihr mir sagen wo ich den Fehler mache?</p>
<pre><code>#include &quot;stdafx.h&quot;
#include &lt;ctime&gt;
#include &lt;map&gt;
#include &lt;vector&gt;
#include &lt;Windows.h&gt;
#include &lt;iostream&gt;

void foo(std::map&lt;int, std::vector&lt;float&gt;&gt;&amp; m)
{
  for (size_t i = 0; i &lt; 10; ++i)
  {
    std::vector&lt;float&gt; v;
    for (size_t j = 0; j &lt; 100; ++j)
    {
      v.push_back(GetTickCount() / static_cast&lt;float&gt;(j));
      Sleep(10);
    }
    m[i] = v;
  }
}

int _tmain(int argc, _TCHAR* argv[])
{
  std::map&lt;int, std::vector&lt;float&gt;&gt; m;

  _CrtDumpMemoryLeaks();
  for (size_t i = 0; i &lt; 10; ++i)
  {
    std::vector&lt;float&gt; v;
    for (size_t j = 0; j &lt; 100; ++j)
    {
      v.push_back(static_cast&lt;float&gt;(j) / GetTickCount());
      Sleep(10);
    }
    m[i] = v;
  }
  _CrtDumpMemoryLeaks();

  Sleep(1000);

  foo(m);
  _CrtDumpMemoryLeaks();

  return 0;
}
</code></pre>
<pre><code>'map.exe' (Win32): Loaded 'C:\Users\Andreas\Documents\Entwicklung\map\Debug\map.exe'. Symbols loaded.
'map.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Symbols loaded.
'map.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Symbols loaded.
'map.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Symbols loaded.
'map.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp120d.dll'. Symbols loaded.
'map.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120d.dll'. Symbols loaded.
Detected memory leaks!
Dumping objects -&gt;
{190} normal block at 0x0048D568, 8 bytes long.
 Data: &lt;l /     &gt; 6C FE 2F 00 00 00 00 00 
{189} normal block at 0x0048D508, 36 bytes long.
 Data: &lt;  H   H   H     &gt; 08 D5 48 00 08 D5 48 00 08 D5 48 00 01 01 CD CD 
Object dump complete.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2453660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453660</guid><dc:creator><![CDATA[andreasgeorg]]></dc:creator><pubDate>Fri, 15 May 2015 18:17:19 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit std::map on Fri, 15 May 2015 18:47:26 GMT]]></title><description><![CDATA[<p>_CrtDumpMemoryLeaks zeigt dir Objekte an, die zu diesem Zeitpunkt Speicher alloziert haben (und noch nicht freigegeben haben).<br />
Wenn du den Aufruf an dieser Stelle machst ist die Ausgabe von _CrtDumpMemoryLeaks zu erwarten (und deutet nicht auf ein leak hin). So wie du das Testprogramm aufgebaut hast wird dir _CrtDumpMemoryLeaks immer ein &quot;leak&quot; anzeigen. Die Objekte werden erst mit dem Ende der main Funktion abgeräumt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453664</guid><dc:creator><![CDATA[Randomuser]]></dc:creator><pubDate>Fri, 15 May 2015 18:47:26 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit std::map on Fri, 15 May 2015 18:53:59 GMT]]></title><description><![CDATA[<p>Was soll dabei denn rauskommen? Du benutzt kein new[*], es kann also kein leak vorhanden sein.</p>
<p>[*] in der map schon, aber einen eventuellen Fehler in der Standardbibliothek wirst du wohl nicht beheben wollen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453665</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 15 May 2015 18:53:59 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit std::map on Fri, 15 May 2015 19:09:27 GMT]]></title><description><![CDATA[<p>Nun das ist ein stark zusammen gekürzter Code.<br />
Das gehört zu einem Trace Fileviewer. Der int ist im Original ein time_t mit dem Zeitstempel des Datensatzes und der Vector enthält die verschiedenen Tags.</p>
<p>Das Originalprogramm ist sauber wenn nur der Code entsprechend den Zeilen 27 - 36 aufgerufen wird. Wird aber der Code von foo (das ist das Datenupdate) aufgerufen in dem vector jedesmal etwas länger wird. Bekomme ich am Ende Leak Dumps.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453667</guid><dc:creator><![CDATA[andreasgeorg]]></dc:creator><pubDate>Fri, 15 May 2015 19:09:27 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit std::map on Fri, 15 May 2015 19:11:55 GMT]]></title><description><![CDATA[<p>andreasgeorg schrieb:</p>
<blockquote>
<p>Das Originalprogramm ist sauber wenn nur der Code entsprechend den Zeilen 27 - 36 aufgerufen wird. Wird aber der Code von foo (das ist das Datenupdate) aufgerufen in dem vector jedesmal etwas länger wird. Bekomme ich am Ende Leak Dumps.</p>
</blockquote>
<p>Das was Randomuser gesagt hat, gilt immer noch. Wenn du CrtDumpMemoryLeaks im gleichen Scope aufrufst, wo deine Objekte liegen, dann ist klar, dass du vermeintliche Leaks siehst, denn diese Objekte existieren schließlich noch.</p>
<p>Ansonsten klingt die Frage schwer danach, dass wir dir sagen sollen, was an dem Code, den du uns nicht gezeigt hast, falsch ist. Was unmöglich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453668</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 15 May 2015 19:11:55 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit std::map on Sat, 16 May 2015 04:31:45 GMT]]></title><description><![CDATA[<p>Ich danke Euch. Ich habe das Beispiel wie folgt umgeschrieben und da ist es sauber. Dann muß ich mir am Montag meinen Code mal ansehen was ich sonst noch an Sauereien drin habe (wäre zu einfach gewesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> )</p>
<pre><code>int _tmain(int argc, _TCHAR* argv[])
{
  {
    std::map&lt;int, std::vector&lt;float&gt;&gt; m;

    for (size_t i = 0; i &lt; 10; ++i)
    {
      std::vector&lt;float&gt; v;
      for (size_t j = 0; j &lt; 100; ++j)
      {
        v.push_back(static_cast&lt;float&gt;(j) / GetTickCount());
        Sleep(10);
      }
      m[i] = v;
    }

    Sleep(1000);

    foo(m);
  }
  _CrtDumpMemoryLeaks();

  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2453694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453694</guid><dc:creator><![CDATA[andreasgeorg]]></dc:creator><pubDate>Sat, 16 May 2015 04:31:45 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit std::map on Sat, 16 May 2015 05:14:11 GMT]]></title><description><![CDATA[<p>andreasgeorg schrieb:</p>
<blockquote>
<p>Dann muß ich mir am Montag meinen Code mal ansehen was ich sonst noch an Sauereien drin habe (wäre zu einfach gewesen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /> )</p>
</blockquote>
<p>Suchst du irgendeinen konkreten Fehler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453695</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 16 May 2015 05:14:11 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit std::map on Sat, 16 May 2015 06:08:09 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Suchst du irgendeinen konkreten Fehler?</p>
</blockquote>
<p>Ja, leider.</p>
<p>Mein Programm lädt eine Datei und liest die Werte in die Map ein. Dann läuft ein Timer der regelmäßig prüft ob die Datei (ein Tracefile aus meinen Steuerprogrammen) geändert / ein neuer Datensatz hinzugefügt wurde. Wenn dem so ist, wird die gleiche Routine verwendet um die Map zu überschreiben / den Datensatz anzuhängen.</p>
<p>Wenn ich nun das Tracefile nur einfach einlese ist alles sauber, erst wenn der Timer eingeschaltet wird und die Funktion wiederholt aufgerufen wird bekomme ich nach der Debugsession Speicherdumps angezeigt.</p>
<p>Mehr zeigen kann ich aber erst nächste Woche, nachdem ich nochmal selbst Zeit in meinen Mist gesteckt habe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453696</guid><dc:creator><![CDATA[andreasgeorg]]></dc:creator><pubDate>Sat, 16 May 2015 06:08:09 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit std::map on Sat, 16 May 2015 09:08:32 GMT]]></title><description><![CDATA[<p>Threads? Ohne Synchronisierung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453708</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 16 May 2015 09:08:32 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit std::map on Mon, 18 May 2015 11:19:57 GMT]]></title><description><![CDATA[<p><strong>mea culpa</strong>, die Standardbiliothek ist wie zu erwarten unschuldig.</p>
<p>Danke Euch für Eure Hinweise.</p>
<p>Ich hab das Problem gefunden. Das Problem ist, dass ich für das Update der Daten einen Timer einsetze. Als ordentlicher Mensch habe ich den Timer auch im Destructor der CMainFrame gekillt. Das ist jedoch grundverkehrt, weil zu diesem Zeitpunkt das Fenster garnicht mehr existiert. Der KillTimer gehört nach DestroyWindow und kommen auch keine Leaks mehr.</p>
<p>Damit sollte das Thema vieleicht eher nach MCF (Visual C++) verschoben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453919</guid><dc:creator><![CDATA[andreasgeorg]]></dc:creator><pubDate>Mon, 18 May 2015 11:19:57 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme mit std::map on Tue, 19 May 2015 08:12:15 GMT]]></title><description><![CDATA[<p>Schau mal nach Directory/Filewatches. Sowas per Timer zu machen ist Resourcenverschwendung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454053</guid><dc:creator><![CDATA[TGGC]]></dc:creator><pubDate>Tue, 19 May 2015 08:12:15 GMT</pubDate></item></channel></rss>