<?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[Segfault bei boost:deserialize]]></title><description><![CDATA[<p>Ich deserialisere (boost::serialize) aus einer Datei unerhalte MANCHMAL einen Speicherzurgiffsfehler. Das hier ist mein Kode:</p>
<pre><code>boost::filesystem::ifstream TaktZustaendeDatei(TaktZustaendeDateiname.str()); 
    boost::archive::text_iarchive TaktZustaende(TaktZustaendeDatei); 

    TaktZustaende.register_type&lt;TaktZustand&gt;();  
    TaktZustaende.register_type&lt;ModulZustand&gt;();  
    TaktZustaende.register_type&lt;DatenZustand&gt;();  
    TaktZustaende.register_type&lt;AttributZustand&gt;();

    // Wir lesen alle serialisierten TaktZustaende in den Container ein
    int AnzahlElemente = 0;
    TaktZustand* TZ = NULL;

    while(true)
    {
      // Wir holen immer ein Objekt des Typs aus dem Archiv
      try { std::cout &lt;&lt; AnzahlElemente &lt;&lt; &quot;\n&quot;; TaktZustaende &gt;&gt; TZ; std::cout &lt;&lt; AnzahlElemente &lt;&lt; &quot;\n&quot;; }
      catch (boost::archive::archive_exception&amp;)
      {
        ausgabe &lt;&lt; AnzahlElemente &lt;&lt; &quot; Elemente aus &quot; &lt;&lt; TaktZustaendeDateiname.str() &lt;&lt; &quot; eingelesen. Ende der Logdatei (oder Fehler)&quot; &lt;&lt; std::endl;
        break;
      }
std::cout &lt;&lt; &quot;AAAAAA\n&quot;;
      TaktZustaendeVektor.push_back(TZ);
      AnzahlElemente++;
    }
</code></pre>
<p>Bisher hatte ich XML-Archive verwendet und es hat immer wunderbar geklappt. Nun habe ich auf Text-Archive umgestellt und erhalte manchmal folgende Ausgabe:<br />
<a href="http://nopaste.info/3759db6347.html" rel="nofollow">http://nopaste.info/3759db6347.html</a><br />
Wenn es gut läuft sieht es so aus:<br />
<a href="http://nopaste.info/162c9a6962.html" rel="nofollow">http://nopaste.info/162c9a6962.html</a><br />
Es ist immer das selbe Archiv! Also daran ändert sich von Fall zu Fall nichts, aber ich verstehe einfach nicht wo der Speicherzugriffsfehler herkommen soll!??</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/296498/segfault-bei-boost-deserialize</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 22:35:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296498.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 05 Dec 2011 22:57:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Segfault bei boost:deserialize on Mon, 05 Dec 2011 22:58:21 GMT]]></title><description><![CDATA[<p>Ich deserialisere (boost::serialize) aus einer Datei unerhalte MANCHMAL einen Speicherzurgiffsfehler. Das hier ist mein Kode:</p>
<pre><code>boost::filesystem::ifstream TaktZustaendeDatei(TaktZustaendeDateiname.str()); 
    boost::archive::text_iarchive TaktZustaende(TaktZustaendeDatei); 

    TaktZustaende.register_type&lt;TaktZustand&gt;();  
    TaktZustaende.register_type&lt;ModulZustand&gt;();  
    TaktZustaende.register_type&lt;DatenZustand&gt;();  
    TaktZustaende.register_type&lt;AttributZustand&gt;();

    // Wir lesen alle serialisierten TaktZustaende in den Container ein
    int AnzahlElemente = 0;
    TaktZustand* TZ = NULL;

    while(true)
    {
      // Wir holen immer ein Objekt des Typs aus dem Archiv
      try { std::cout &lt;&lt; AnzahlElemente &lt;&lt; &quot;\n&quot;; TaktZustaende &gt;&gt; TZ; std::cout &lt;&lt; AnzahlElemente &lt;&lt; &quot;\n&quot;; }
      catch (boost::archive::archive_exception&amp;)
      {
        ausgabe &lt;&lt; AnzahlElemente &lt;&lt; &quot; Elemente aus &quot; &lt;&lt; TaktZustaendeDateiname.str() &lt;&lt; &quot; eingelesen. Ende der Logdatei (oder Fehler)&quot; &lt;&lt; std::endl;
        break;
      }
std::cout &lt;&lt; &quot;AAAAAA\n&quot;;
      TaktZustaendeVektor.push_back(TZ);
      AnzahlElemente++;
    }
</code></pre>
<p>Bisher hatte ich XML-Archive verwendet und es hat immer wunderbar geklappt. Nun habe ich auf Text-Archive umgestellt und erhalte manchmal folgende Ausgabe:<br />
<a href="http://nopaste.info/3759db6347.html" rel="nofollow">http://nopaste.info/3759db6347.html</a><br />
Wenn es gut läuft sieht es so aus:<br />
<a href="http://nopaste.info/162c9a6962.html" rel="nofollow">http://nopaste.info/162c9a6962.html</a><br />
Es ist immer das selbe Archiv! Also daran ändert sich von Fall zu Fall nichts, aber ich verstehe einfach nicht wo der Speicherzugriffsfehler herkommen soll!??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2153605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153605</guid><dc:creator><![CDATA[fabske]]></dc:creator><pubDate>Mon, 05 Dec 2011 22:58:21 GMT</pubDate></item><item><title><![CDATA[Reply to Segfault bei boost:deserialize on Tue, 06 Dec 2011 16:53:57 GMT]]></title><description><![CDATA[<p>1. Da fehlt ja noch einiges an Code, bspw. die serialize Funktion(en).</p>
<p>2. Schonmal einen Debugger benutzt ?</p>
<p>3. Ich vermute der Segfault tritt hier auf:</p>
<pre><code>TaktZustaende &gt;&gt; TZ
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2153972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2153972</guid><dc:creator><![CDATA[nurf]]></dc:creator><pubDate>Tue, 06 Dec 2011 16:53:57 GMT</pubDate></item></channel></rss>