<?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[stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>Ich habe ein Problem bei dem Ihr mir hoffentlich helfen könnt.<br />
zu erst mal der Code in dem das Problem auftritt:</p>
<pre><code>.
.
.
try{
					//TODO Abfragen der daten OK
iValue= dread.readValue(dconf[i].getMbId(), dconf[i].getStartReg(), dconf[i].getRegNo(), dconf[i].getStart(), dconf[i].getOverflow(), dconf[i].getClear(), dconf[i].getCounter(), dconf[i].getID());
						//TODO wert abholen und ins logfile schreiben

						stringstream ssvalue (stringstream::in | stringstream::out);
						string sValueBuffer;
						string buffer;

						ssvalue &lt;&lt; iValue;//iValue in string stream schreiben

						buffer = ssvalue.str();
						sValueBuffer = buffer + dconf[i].getValueInterpret(); //strings zusammnefÃ¼gen
						fValue = cvalue.rechner(sValueBuffer);//umrechnen
						ssvalue.str(&quot;&quot;);//bereiningen
						ssvalue.clear();

						dWrite.body(dconf[i].getID(), fValue); //Wert ermitteln und schreiben funktioniert
						cout &lt;&lt; dconf[i].getID()&lt;&lt;&quot;: &quot;&lt;&lt;fValue &lt;&lt; endl;

					}catch(devReadExcept&amp; dre){
						/*Fehler im dev read Block*/

						error=dre.get_devReadExcept(eno);// denn error fall abrfagen
						dWrite.error(dconf[i].getID(), eno, error);
						//TODO
						//SdWrite.error(dconf[i].getID(), eno, error);
						cout&lt;&lt;dconf[i].getID()&lt;&lt;&quot; error ::&quot;&lt;&lt; eno &lt;&lt;&quot;::&quot; &lt;&lt; error &lt;&lt; endl;
					}
.
.
.
</code></pre>
<p>Mein Problem ist nun, das in der zeile 13 volgender Fehler auftritt:</p>
<pre><code>watchdogMKIII: malloc.c:3801: _int_malloc: Assertion `(unsigned long)(size) &gt;= (unsigned long)(nb)' failed.
</code></pre>
<p>Kann mir da wer helfen?<br />
Hab ich hier einen offensichtlichen fehler gemacht?</p>
<p>MfG BabCom</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/321944/stringstream-str-bricht-mit-quot-malloc-c-3801-quot-error-ab</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 09:14:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/321944.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Nov 2013 16:58:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 17:07:20 GMT]]></title><description><![CDATA[<p>Hi Leute,</p>
<p>Ich habe ein Problem bei dem Ihr mir hoffentlich helfen könnt.<br />
zu erst mal der Code in dem das Problem auftritt:</p>
<pre><code>.
.
.
try{
					//TODO Abfragen der daten OK
iValue= dread.readValue(dconf[i].getMbId(), dconf[i].getStartReg(), dconf[i].getRegNo(), dconf[i].getStart(), dconf[i].getOverflow(), dconf[i].getClear(), dconf[i].getCounter(), dconf[i].getID());
						//TODO wert abholen und ins logfile schreiben

						stringstream ssvalue (stringstream::in | stringstream::out);
						string sValueBuffer;
						string buffer;

						ssvalue &lt;&lt; iValue;//iValue in string stream schreiben

						buffer = ssvalue.str();
						sValueBuffer = buffer + dconf[i].getValueInterpret(); //strings zusammnefÃ¼gen
						fValue = cvalue.rechner(sValueBuffer);//umrechnen
						ssvalue.str(&quot;&quot;);//bereiningen
						ssvalue.clear();

						dWrite.body(dconf[i].getID(), fValue); //Wert ermitteln und schreiben funktioniert
						cout &lt;&lt; dconf[i].getID()&lt;&lt;&quot;: &quot;&lt;&lt;fValue &lt;&lt; endl;

					}catch(devReadExcept&amp; dre){
						/*Fehler im dev read Block*/

						error=dre.get_devReadExcept(eno);// denn error fall abrfagen
						dWrite.error(dconf[i].getID(), eno, error);
						//TODO
						//SdWrite.error(dconf[i].getID(), eno, error);
						cout&lt;&lt;dconf[i].getID()&lt;&lt;&quot; error ::&quot;&lt;&lt; eno &lt;&lt;&quot;::&quot; &lt;&lt; error &lt;&lt; endl;
					}
.
.
.
</code></pre>
<p>Mein Problem ist nun, das in der zeile 13 volgender Fehler auftritt:</p>
<pre><code>watchdogMKIII: malloc.c:3801: _int_malloc: Assertion `(unsigned long)(size) &gt;= (unsigned long)(nb)' failed.
</code></pre>
<p>Kann mir da wer helfen?<br />
Hab ich hier einen offensichtlichen fehler gemacht?</p>
<p>MfG BabCom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368957</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 29 Nov 2013 17:07:20 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 17:02:17 GMT]]></title><description><![CDATA[<p>Zeile 12 ist leer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368959</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Fri, 29 Nov 2013 17:02:17 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 17:06:26 GMT]]></title><description><![CDATA[<p>Sry ich meinte Zeile 13</p>
<pre><code>buffer = ssvalue.str();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2368960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368960</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 29 Nov 2013 17:06:26 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 17:10:10 GMT]]></title><description><![CDATA[<p>Caligulaminus schrieb:</p>
<blockquote>
<p>Zeile 12 ist leer.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>kann das sein, dass du irgendwo daten überschreibst ohne die alten daten zu &quot;deleten&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368963</guid><dc:creator><![CDATA[ACnut]]></dc:creator><pubDate>Fri, 29 Nov 2013 17:10:10 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 17:23:08 GMT]]></title><description><![CDATA[<p>nun eigentlich nicht ich benutze lediglich ein par Vektoren<br />
Diese Objekte werden zur Zeit jedenfalls nach dem erstelle und befüllen mit Daten nicht mehr geändert/gelöscht solange das Programm läuft. Ansonsten gibt es noch</p>
<p>Dh. Solange das Programm läft wird nicht gelöscht oder hinzugefügt (ausgenommen in der Konfigphase in der aber nur hinzugefügt wird.)</p>
<p>Soll ich die entsprechenden stellen mal heraussuchen und posten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368969</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 29 Nov 2013 17:23:08 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 17:38:43 GMT]]></title><description><![CDATA[<p>Machst du irgendetwas mit Zeigern?<br />
Mit Iteratoren? Wenn das der Fall, aktiviere mal Iterator-Checking deines Compilers.</p>
<p>Edit: Sind die Indices des Arrays gültig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368971</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 29 Nov 2013 17:38:43 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 17:40:44 GMT]]></title><description><![CDATA[<p>BabCom schrieb:</p>
<blockquote>
<p>Soll ich die entsprechenden stellen mal heraussuchen und posten?</p>
</blockquote>
<p>ja poste es mal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368972</guid><dc:creator><![CDATA[ACnut]]></dc:creator><pubDate>Fri, 29 Nov 2013 17:40:44 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 17:45:11 GMT]]></title><description><![CDATA[<p>Ich erstelle an einer anderen Stelle(und andere Klasse) ein Array aus 50 uint16_t elementen. Dabei handelt es sich um ein Buffer für die libmodbus rückgaben. zur zeit greife ich aber nur statisch auf die ersten beidne Elemente davon zu. desshalb glaube ich nicht das dort der fehler leigt.(oder?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368973</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 29 Nov 2013 17:45:11 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 18:03:24 GMT]]></title><description><![CDATA[<p>OK alle stellen der reihe nach und ins abfolge der Klassen:</p>
<p>WatchDog</p>
<pre><code>//includes etc
.
.
.
using namespace std;

int main(int argc, char* argv[]){
.
.
.//Variablen und objekte
vector&lt;devConfig&gt; dconf;// Die decConfig Objekte in einem Vektor speichern
.
.//einige ausgaben
.
//den Vektor befüllen 

for(int i=0; i&lt;bconf.getDevAnz(); i++)
{
devConfig myDconf;				//dummy objekt anlegen
dconf.push_back(myDconf);		//objekt in Vektor einfügen
config.ReadDevConfig(dconf[i]); //Konfiguration lesen
//werte ausgeb nund überprüfen
   try{
dread.init(mbId, dconf[i].getStartReg(), dconf[i].getRegNo(), dconf[i].getStart(), dconf[i].getOverflow(), dconf[i].getClear(), dconf[i].getAdresse(),dconf[i].getCounter(), dconf[i].getID());
	dconf[i].setMbId(mbId);
	}catch(devReadExcept&amp; dre){
	    error = dre.get_devReadExcept(eno);
	    cout&lt;&lt;&quot;error ::&quot;&lt;&lt; eno &lt;&lt;&quot;::&quot; &lt;&lt; error &lt;&lt; endl;;
	}
} //Config stimmt
cout&lt;&lt;&quot;/Config&quot;&lt;&lt;endl;
.
.
.
+ den teil aus posting 1
</code></pre>
<p>Das ist alles was ich mit dem erste nVektor mache...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368974</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 29 Nov 2013 18:03:24 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 18:15:14 GMT]]></title><description><![CDATA[<p>DevRead.h</p>
<pre><code>#define IBUFSIZE 50
#define MBPORT 502

class devRead {
public:
.
.//einige funktionen
.

private:
	int KontextAnz;				//Anzahl der benötigten sockets
	uint16_t *ibuf;				// buffer für die werte
	float fValue;			//speicher für die rückgabe

	struct ipDevNrSockNr{
		std::string ip;				// ip des DEvices
		int devNr;				// nummer des Devoces
		int mbId;				//zugeordnete socket Nr.
	};

	std::vector&lt;ipDevNrSockNr&gt; ipDevSock;//Speicher für die zuordnungen
	std::vector&lt;modbus_t*&gt; ctx;			 //Speicher für die modbus_t strukturen (für den verbindungs aufbau)(libmodbus Kontext)

};
</code></pre>
<p>DevRead.cpp</p>
<pre><code>devRead::devRead() {
	// TODO Auto-generated constructor stub
	ibuf = new uint16_t[IBUFSIZE];//IBUFSIZE = 50
}

int devRead::init(int &amp;mbId, int startReg, int regAnz, int cRegStart, int cRegOverflow, int cRegClear, std::string ip, int counter, int devNr){
	switch (this-&gt;mbNr(mbId, ip, devNr)){
	case 1:// neue modbus_t Struktur angelegt
		modbus_t *mb;
		//ctx ist der Vektor in dem sich die modbus_t Strukturen Befinden
		mb = modbus_new_tcp(ip.c_str(),MBPORT);//neuen tcp context anlegen
		ctx.push_back(mb);

		modbus_connect(ctx[mbId]) == -1){	// verbindung aufbauen
			throw devReadExcept(modbus_strerror(errno), errno);
			break;//sonst meckert der eclipse
		}
		break;

	case 0:// verbindung bereits vorhanden
		break;

	case -1://fehler aufgetreten
		return -1;
		break;
	}

float devRead::readValue(int mbId, int startReg, int regAnz, int cRegStart, int cRegOverflow, int cRegClear, int counter, int devNr){

	int rc = 0;
	switch(counter){
	case 0://kein Counter
		//int retVal = 0;
		rc = modbus_read_input_registers(ctx[mbId], startReg, regAnz, ibuf);
		break;

	case 1://Counter
		rc = modbus_read_registers(ctx[mbId], startReg, regAnz, ibuf);
		break;
	}

	cout &lt;&lt;&quot;Device &quot;&lt;&lt; devNr &lt;&lt; &quot;RAW Data ibuf[0]: &quot;&lt;&lt; ibuf[0]&lt;&lt;&quot;  ibuf[1]: &quot;&lt;&lt;ibuf[1]&lt;&lt;endl;
	fValue = (ibuf[1]*65536)+ibuf[0];
	return fValue;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2368975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368975</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 29 Nov 2013 18:15:14 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 18:20:31 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Edit: Sind die Indices des Arrays gültig?</p>
</blockquote>
<p>Ja wiegesagt zur zeit nur statischer zugriff auf die ersten beiden elemente nach dem diese beschrieben wurden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368976</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 29 Nov 2013 18:20:31 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 18:32:34 GMT]]></title><description><![CDATA[<p>Was ist der Wert von bconf.getDevAnz()?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368977</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 29 Nov 2013 18:32:34 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 18:40:50 GMT]]></title><description><![CDATA[<p>bconf speichert die config werte für das programm(allgeine sachen)<br />
bconf.getDevAnz() gibt die anzahl der sensoren zurück die angeschlossen werden.<br />
(nennen die Sensoren auch device daher das dev ^^)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368980</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 29 Nov 2013 18:40:50 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Fri, 29 Nov 2013 18:42:07 GMT]]></title><description><![CDATA[<p>so leute danke für die anregungen aber ich hab jetzt gleich Training alsos nicht wundern wenn ich mich nicht mehr melde. <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/2368983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368983</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 29 Nov 2013 18:42:07 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Tue, 03 Dec 2013 17:05:20 GMT]]></title><description><![CDATA[<p>hatt sonst noch wer ne idee worann es leigen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2369569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2369569</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Tue, 03 Dec 2013 17:05:20 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Tue, 03 Dec 2013 17:47:23 GMT]]></title><description><![CDATA[<p>Hast du den Text etwa abgetippt für das Forum? Da fehlen ja teilweise Klammern und Schlüsselwörter, das kann so niemals funktionieren! Siehe:<br />
<a href="http://www.c-plusplus.net/forum/304133" rel="nofollow">http://www.c-plusplus.net/forum/304133</a></p>
<p>Ansonsten schließe ich mich mal meinen Vorrednern an. Deine Versicherungen sind ja schön und gut, aber ich möchte das doch lieber von einem Computer bestätigt wissen, ob die verdächtigen Stellen im Programm wirklich korrekt sind. Also:<br />
-ersetze alle new durch vector oder andere STL-Container ( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> Dies solltest du sowieso tun, ganz unabhängig von der Fehlersuche. Dies erhöht einfach die grundlegende Fehlersicherheit und auch noch den Komfort. Es gibt also keinen Grund, dies nicht zu tun!)<br />
-Aktiviere dann beim Übersetzen den Debugmodus deiner STL<br />
-???<br />
-Profit!</p>
<p>Da du anscheinend unter Linux entwickelst, empfehle ich auch mal valgrind. Damit findet man schnelle sehr viele Fehler dieser Art. Programm mit Debugsymbolen erstellen, dann mal wie folgt aufrufen:</p>
<pre><code>valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes dein_programm
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2369576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2369576</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 03 Dec 2013 17:47:23 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Tue, 03 Dec 2013 18:35:26 GMT]]></title><description><![CDATA[<p>Hi Ich habe mir deinen tipp alle news durch stl funktionen zu ersetzen bereits zu herzen genommen (bis auf eine ausnahme Arbeite ich nur noch mit stl funktionen). danke für den tipp mit Valgrind. Ich habe bereits öfters davon gelesen es aber noch nie selbst benutzt.<br />
Ich bin grade dabei das Tool zu installieren...</p>
<p>Edit:<br />
... Valgrind is drauf.<br />
jedoch startet er valgrind nicht mit volgender Fehlermeldung:<br />
valgrind : watchdog: command not found</p>
<p>ich Kompiliere das mit folgenden angaben</p>
<pre><code>g++ -o watchdog -g -O0 -Wall xyz.cpp...
</code></pre>
<p>ich befinde mich in der Konsole im Programmverzeichniss<br />
was mache ich falsch?<br />
gefunden ./watchdog zum aufrufen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2369585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2369585</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Tue, 03 Dec 2013 18:35:26 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Tue, 03 Dec 2013 18:51:55 GMT]]></title><description><![CDATA[<p>So hab valgrind ausgeführt und folgendes Log erhalten.</p>
<pre><code>==7058== Memcheck, a memory error detector
==7058== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==7058== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==7058== Command: ./watchdog
==7058== 
Das Programm WatchDog wird Manuell ausgeführt.
Bitte die Konfiguration bestätigen.
Config
Box-ID 			: 1
Device Anzahl		: 4
Logfile Intervall	: 15 int Minuten
Wenn alles stimmt bitte mit Enter bestaetigen ansonsten Str+C druecken.

counter		    : 0
Device Nr. 		: 1: 
Adresse			: 192.168.0.50
Start Register 	: 1
Register Anzahl	: 1
ID des Device  	: 1
Umrechnungsfaktor	: /100-50
Device Intervall	: 1 in Minuten
Wenn alles stimmt bitte mit Enter bestaetigen ansonsten Str+C druecken.

==7058== Invalid read of size 4
==7058==    at 0x805042C: devRead::mbNr(int&amp;, std::string, int) (devRead.cpp:120)
==7058==    by 0x804FB87: devRead::init(int&amp;, int, int, int, int, int, std::string, int, int) (devRead.cpp:28)
==7058==    by 0x8052727: main (watchDog.cpp:122)
==7058==  Address 0x4336854 is 8 bytes after a block of size 12 alloc'd
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x80519B5: __gnu_cxx::new_allocator&lt;devRead::ipDevNrSockNr&gt;::allocate(unsigned int, void const*) (new_allocator.h:92)
==7058==    by 0x8051765: std::_Vector_base&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt;::_M_allocate(unsigned int) (in /home/babcom/ELMOS/test/src/watchdog)
==7058==    by 0x80510DB: std::vector&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt;::_M_insert_aux(__gnu_cxx::__normal_iterator&lt;devRead::ipDevNrSockNr*, std::vector&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt; &gt;, devRead::ipDevNrSockNr const&amp;) (vector.tcc:327)
==7058==    by 0x8050A20: std::vector&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt;::push_back(devRead::ipDevNrSockNr const&amp;) (stl_vector.h:834)
==7058==    by 0x8050406: devRead::mbNr(int&amp;, std::string, int) (devRead.cpp:118)
==7058==    by 0x804FB87: devRead::init(int&amp;, int, int, int, int, int, std::string, int, int) (devRead.cpp:28)
==7058==    by 0x8052727: main (watchDog.cpp:122)
==7058== 
Device 1 eingerichtet.

counter		    : 0
Device Nr. 		: 2: 
Adresse			: 192.168.0.50
Start Register 	: 5
Register Anzahl	: 1
ID des Device  	: 2
Umrechnungsfaktor	: /100-50
Device Intervall	: 1 in Minuten
Wenn alles stimmt bitte mit Enter bestaetigen ansonsten Str+C druecken.

Device 2 eingerichtet.

counter		    : 1
Device Nr. 		: 3: 
Adresse			: 192.168.0.100
Start Register 	: 24
Register Anzahl	: 2
ID des Device  	: 3
Umrechnungsfaktor	: /1000
Device Intervall	: 1 in Minuten
Counter Start Reg  : 80
Counter Clear Reg  : 81
Counter overflow Reg  : 82
Counter DILatch Reg   : 83
Wenn alles stimmt bitte mit Enter bestaetigen ansonsten Str+C druecken.

Device 3 eingerichtet.

counter		    : 1
Device Nr. 		: 4: 
Adresse			: 192.168.0.100
Start Register 	: 26
Register Anzahl	: 2
ID des Device  	: 4
Umrechnungsfaktor	: /1000
Device Intervall	: 1 in Minuten
Counter Start Reg  : 84
Counter Clear Reg  : 85
Counter overflow Reg  : 86
Counter DILatch Reg   : 87
Wenn alles stimmt bitte mit Enter bestaetigen ansonsten Str+C druecken.

Device 4 eingerichtet.
/Config
==7058== Conditional jump or move depends on uninitialised value(s)
==7058==    at 0x804EFCE: dataWrite::header(int) (dataWrite.cpp:45)
==7058==    by 0x80528A9: main (watchDog.cpp:157)
==7058== 
==7058== Conditional jump or move depends on uninitialised value(s)
==7058==    at 0x804F006: dataWrite::header(int) (dataWrite.cpp:32)
==7058==    by 0x80528A9: main (watchDog.cpp:157)
==7058== 
Neues Logfile erstellt
==7058== Invalid write of size 2
==7058==    at 0x804FB38: devRead::ibufZERO() (devRead.cpp:21)
==7058==    by 0x80500D2: devRead::readValue(int, int, int, int, int, int, int, int) (devRead.cpp:79)
==7058==    by 0x8052A79: main (watchDog.cpp:168)
==7058==  Address 0x433624c is 0 bytes after a block of size 100 alloc'd
==7058==    at 0x402B454: operator new[](unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x804FAE1: devRead::devRead() (devRead.cpp:16)
==7058==    by 0x8051F1A: main (watchDog.cpp:76)
==7058== 
Device 3RAW Data ibuf[0]: 49  ibuf[1]: 0
3: 0
Device 4RAW Data ibuf[0]: 1868  ibuf[1]: 0
4: 1
Device 1RAW Data ibuf[0]: 8028  ibuf[1]: 0
1: 30
Device 2RAW Data ibuf[0]: 7486  ibuf[1]: 0
2: 24
Device 1RAW Data ibuf[0]: 8028  ibuf[1]: 0
1: 30
Device 2RAW Data ibuf[0]: 7491  ibuf[1]: 0
2: 24
Device 3RAW Data ibuf[0]: 49  ibuf[1]: 0
3: 0
Device 4RAW Data ibuf[0]: 1868  ibuf[1]: 0
4: 1
Device 2RAW Data ibuf[0]: 7491  ibuf[1]: 0
2: 24
Device 3RAW Data ibuf[0]: 49  ibuf[1]: 0
3: 0
Device 4RAW Data ibuf[0]: 1868  ibuf[1]: 0
4: 1
Device 1RAW Data ibuf[0]: 8022  ibuf[1]: 0
1: 30
^C==7058== 
==7058== FILE DESCRIPTORS: 7 open at exit.
==7058== Open file descriptor 6: Logfile 19 :36 03. 12. 2013 .xml
==7058==    at 0x4239D43: __open_nocancel (syscall-template.S:82)
==7058==    by 0x41CCACB: _IO_file_open (fileops.c:233)
==7058==    by 0x41CCC87: _IO_file_fopen@@GLIBC_2.1 (fileops.c:338)
==7058==    by 0x41C0D86: __fopen_internal (iofopen.c:93)
==7058==    by 0x41C354A: fopen64 (iofopen64.c:39)
==7058==    by 0x40B75BE: std::__basic_file&lt;char&gt;::open(char const*, std::_Ios_Openmode, int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x40BAB37: std::basic_filebuf&lt;char, std::char_traits&lt;char&gt; &gt;::open(char const*, std::_Ios_Openmode) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x40BD204: std::basic_fstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(char const*, std::_Ios_Openmode) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x80528A9: main (watchDog.cpp:157)
==7058== 
==7058== Open AF_INET socket 5: 192.168.0.20:37119 &lt;-&gt; 192.168.0.100:502
==7058==    at 0x424C867: socket (socket.S:64)
==7058==    by 0x40526A1: _modbus_tcp_connect (modbus-tcp.c:254)
==7058==    by 0x404F48F: modbus_connect (modbus.c:1499)
==7058==    by 0x8052727: main (watchDog.cpp:122)
==7058== 
==7058== Open AF_INET socket 4: 192.168.0.20:32935 &lt;-&gt; 192.168.0.50:502
==7058==    at 0x424C867: socket (socket.S:64)
==7058==    by 0x40526A1: _modbus_tcp_connect (modbus-tcp.c:254)
==7058==    by 0x404F48F: modbus_connect (modbus.c:1499)
==7058==    by 0x8052727: main (watchDog.cpp:122)
==7058== 
==7058== Open file descriptor 3: konfig.xml
==7058==    at 0x4239D43: __open_nocancel (syscall-template.S:82)
==7058==    by 0x41CCACB: _IO_file_open (fileops.c:233)
==7058==    by 0x41CCC87: _IO_file_fopen@@GLIBC_2.1 (fileops.c:338)
==7058==    by 0x41C0D86: __fopen_internal (iofopen.c:93)
==7058==    by 0x41C354A: fopen64 (iofopen64.c:39)
==7058==    by 0x40B75BE: std::__basic_file&lt;char&gt;::open(char const*, std::_Ios_Openmode, int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x40BAB37: std::basic_filebuf&lt;char, std::char_traits&lt;char&gt; &gt;::open(char const*, std::_Ios_Openmode) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x40BBD37: std::basic_ifstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(char const*, std::_Ios_Openmode) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x8051EFE: main (watchDog.cpp:74)
==7058== 
==7058== Open file descriptor 2: /dev/pts/0
==7058==    &lt;inherited from parent&gt;
==7058== 
==7058== Open file descriptor 1: /dev/pts/0
==7058==    &lt;inherited from parent&gt;
==7058== 
==7058== Open file descriptor 0: /dev/pts/0
==7058==    &lt;inherited from parent&gt;
==7058== 
==7058== 
==7058== HEAP SUMMARY:
==7058==     in use at exit: 19,000 bytes in 24 blocks
==7058==   total heap usage: 323 allocs, 299 frees, 63,882 bytes allocated
==7058== 
==7058== 8 bytes in 1 blocks are still reachable in loss record 1 of 17
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x80518EB: __gnu_cxx::new_allocator&lt;_modbus*&gt;::allocate(unsigned int, void const*) (new_allocator.h:92)
==7058==    by 0x80515B7: std::_Vector_base&lt;_modbus*, std::allocator&lt;_modbus*&gt; &gt;::_M_allocate(unsigned int) (in /home/babcom/ELMOS/test/src/watchdog)
==7058==    by 0x8050D7E: std::vector&lt;_modbus*, std::allocator&lt;_modbus*&gt; &gt;::_M_insert_aux(__gnu_cxx::__normal_iterator&lt;_modbus**, std::vector&lt;_modbus*, std::allocator&lt;_modbus*&gt; &gt; &gt;, _modbus* const&amp;) (vector.tcc:327)
==7058==    by 0x8050978: std::vector&lt;_modbus*, std::allocator&lt;_modbus*&gt; &gt;::push_back(_modbus* const&amp;) (stl_vector.h:834)
==7058==    by 0x804FBE2: devRead::init(int&amp;, int, int, int, int, int, std::string, int, int) (devRead.cpp:33)
==7058==    by 0x8052727: main (watchDog.cpp:122)
==7058== 
==7058== 31 bytes in 1 blocks are possibly lost in loss record 2 of 17
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x40E87D3: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator&lt;char&gt; const&amp;) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x13795007: ???
==7058== 
==7058== 31 bytes in 1 blocks are possibly lost in loss record 3 of 17
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x40E87D3: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator&lt;char&gt; const&amp;) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x13795003: ???
==7058== 
==7058== 37 bytes in 1 blocks are possibly lost in loss record 4 of 17
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x40E87D3: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator&lt;char&gt; const&amp;) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x146B0BD: ???
==7058== 
==7058== 40 bytes in 2 blocks are still reachable in loss record 5 of 17
==7058==    at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x405314A: modbus_new_tcp (modbus-tcp.c:664)
==7058==    by 0x8052727: main (watchDog.cpp:122)
==7058== 
==7058== 45 bytes in 1 blocks are possibly lost in loss record 6 of 17
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x40E87D3: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator&lt;char&gt; const&amp;) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x40EA7B7: char* std::string::_S_construct&lt;char*&gt;(char*, char*, std::allocator&lt;char&gt; const&amp;, std::forward_iterator_tag) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x40EA88F: std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::basic_string&lt;char*&gt;(char*, char*, std::allocator&lt;char&gt; const&amp;) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x3: ???
==7058==    by 0x30203632: ???
==7058== 
==7058== 48 bytes in 1 blocks are still reachable in loss record 7 of 17
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x80519B5: __gnu_cxx::new_allocator&lt;devRead::ipDevNrSockNr&gt;::allocate(unsigned int, void const*) (new_allocator.h:92)
==7058==    by 0x8051765: std::_Vector_base&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt;::_M_allocate(unsigned int) (in /home/babcom/ELMOS/test/src/watchdog)
==7058==    by 0x80510DB: std::vector&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt;::_M_insert_aux(__gnu_cxx::__normal_iterator&lt;devRead::ipDevNrSockNr*, std::vector&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt; &gt;, devRead::ipDevNrSockNr const&amp;) (vector.tcc:327)
==7058==    by 0x8050A20: std::vector&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt;::push_back(devRead::ipDevNrSockNr const&amp;) (stl_vector.h:834)
==7058==    by 0x8050597: devRead::mbNr(int&amp;, std::string, int) (devRead.cpp:144)
==7058==    by 0x804FB87: devRead::init(int&amp;, int, int, int, int, int, std::string, int, int) (devRead.cpp:28)
==7058==    by 0x8052727: main (watchDog.cpp:122)
==7058== 
==7058== 62 bytes in 2 blocks are possibly lost in loss record 8 of 17
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x40E87D3: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator&lt;char&gt; const&amp;) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x134FF403: ???
==7058== 
==7058== 80 bytes in 2 blocks are still reachable in loss record 9 of 17
==7058==    at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x4053125: modbus_new_tcp (modbus-tcp.c:656)
==7058==    by 0x8052727: main (watchDog.cpp:122)
==7058== 
==7058== 100 bytes in 1 blocks are still reachable in loss record 10 of 17
==7058==    at 0x402B454: operator new[](unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x804FAE1: devRead::devRead() (devRead.cpp:16)
==7058==    by 0x8051F1A: main (watchDog.cpp:76)
==7058== 
==7058== 140 bytes in 4 blocks are possibly lost in loss record 11 of 17
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x40E87D3: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator&lt;char&gt; const&amp;) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x134FF4BD: ???
==7058== 
==7058== 240 bytes in 1 blocks are still reachable in loss record 12 of 17
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x8053D10: __gnu_cxx::new_allocator&lt;devConfig&gt;::allocate(unsigned int, void const*) (new_allocator.h:92)
==7058==    by 0x8053B8D: std::_Vector_base&lt;devConfig, std::allocator&lt;devConfig&gt; &gt;::_M_allocate(unsigned int) (in /home/babcom/ELMOS/test/src/watchdog)
==7058==    by 0x80536D5: std::vector&lt;devConfig, std::allocator&lt;devConfig&gt; &gt;::_M_insert_aux(__gnu_cxx::__normal_iterator&lt;devConfig*, std::vector&lt;devConfig, std::allocator&lt;devConfig&gt; &gt; &gt;, devConfig const&amp;) (vector.tcc:327)
==7058==    by 0x8053356: std::vector&lt;devConfig, std::allocator&lt;devConfig&gt; &gt;::push_back(devConfig const&amp;) (stl_vector.h:834)
==7058==    by 0x80520C6: main (watchDog.cpp:96)
==7058== 
==7058== 352 bytes in 1 blocks are still reachable in loss record 13 of 17
==7058==    at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x41C0D17: __fopen_internal (iofopen.c:76)
==7058==    by 0x41C354A: fopen64 (iofopen64.c:39)
==7058==    by 0x40B75BE: std::__basic_file&lt;char&gt;::open(char const*, std::_Ios_Openmode, int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x40BAB37: std::basic_filebuf&lt;char, std::char_traits&lt;char&gt; &gt;::open(char const*, std::_Ios_Openmode) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x40BBD37: std::basic_ifstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(char const*, std::_Ios_Openmode) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x8051EFE: main (watchDog.cpp:74)
==7058== 
==7058== 352 bytes in 1 blocks are still reachable in loss record 14 of 17
==7058==    at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x41C0D17: __fopen_internal (iofopen.c:76)
==7058==    by 0x41C354A: fopen64 (iofopen64.c:39)
==7058==    by 0x40B75BE: std::__basic_file&lt;char&gt;::open(char const*, std::_Ios_Openmode, int) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x40BAB37: std::basic_filebuf&lt;char, std::char_traits&lt;char&gt; &gt;::open(char const*, std::_Ios_Openmode) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x40BD204: std::basic_fstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(char const*, std::_Ios_Openmode) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x80528A9: main (watchDog.cpp:157)
==7058== 
==7058== 525 bytes in 1 blocks are possibly lost in loss record 15 of 17
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x40E87D3: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator&lt;char&gt; const&amp;) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x844D1F07: ???
==7058== 
==7058== 525 bytes in 1 blocks are possibly lost in loss record 16 of 17
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x40E87D3: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator&lt;char&gt; const&amp;) (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058==    by 0x98DADF03: ???
==7058== 
==7058== 16,384 bytes in 2 blocks are still reachable in loss record 17 of 17
==7058==    at 0x402B454: operator new[](unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x40B9C42: std::basic_filebuf&lt;char, std::char_traits&lt;char&gt; &gt;::_M_allocate_internal_buffer() (in /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16)
==7058== 
==7058== LEAK SUMMARY:
==7058==    definitely lost: 0 bytes in 0 blocks
==7058==    indirectly lost: 0 bytes in 0 blocks
==7058==      possibly lost: 1,396 bytes in 12 blocks
==7058==    still reachable: 17,604 bytes in 12 blocks
==7058==         suppressed: 0 bytes in 0 blocks
==7058== 
==7058== For counts of detected and suppressed errors, rerun with: -v
==7058== Use --track-origins=yes to see where uninitialised values come from
==7058== ERROR SUMMARY: 23 errors from 12 contexts (suppressed: 0 from 0)
</code></pre>
<p>Kann mir wer erklähren wie ich das zu interpretieren habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2369592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2369592</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Tue, 03 Dec 2013 18:51:55 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Tue, 03 Dec 2013 19:07:41 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>...<br />
erstellen, dann mal wie folgt aufrufen:</p>
<pre><code>valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=20 --track-fds=yes dein_programm
</code></pre>
</blockquote>
<p>Danke für den tipp und deine Hilfe.<br />
Ich habe angefangen die Fehler zu beseitigen.</p>
<p>echt vielen dank an alle die mir geholfen haben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Mfg BabCom</p>
<p>PS: ich meld mich wieder wenn ich nicht mehr weiter komme <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/2369594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2369594</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Tue, 03 Dec 2013 19:07:41 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Tue, 03 Dec 2013 19:09:37 GMT]]></title><description><![CDATA[<p>Ich nehme mal nur die erste Meldung, denn spätere Fehler sind oft eine Folge vorheriger Fehler. Falls nach Beheben des ersten Fehlers die anderen trotzdem noch auftreten, dann kann man sich um diese kümmern:</p>
<pre><code>==7058== Invalid read of size 4
==7058==    at 0x805042C: devRead::mbNr(int&amp;, std::string, int) (devRead.cpp:120)
==7058==    by 0x804FB87: devRead::init(int&amp;, int, int, int, int, int, std::string, int, int) (devRead.cpp:28)
==7058==    by 0x8052727: main (watchDog.cpp:122)
==7058==  Address 0x4336854 is 8 bytes after a block of size 12 alloc'd
==7058==    at 0x402B9B4: operator new(unsigned int) (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==7058==    by 0x80519B5: __gnu_cxx::new_allocator&lt;devRead::ipDevNrSockNr&gt;::allocate(unsigned int, void const*) (new_allocator.h:92)
==7058==    by 0x8051765: std::_Vector_base&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt;::_M_allocate(unsigned int) (in /home/babcom/ELMOS/test/src/watchdog)
==7058==    by 0x80510DB: std::vector&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt;::_M_insert_aux(__gnu_cxx::__normal_iterator&lt;devRead::ipDevNrSockNr*, std::vector&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt; &gt;, devRead::ipDevNrSockNr const&amp;) (vector.tcc:327)
==7058==    by 0x8050A20: std::vector&lt;devRead::ipDevNrSockNr, std::allocator&lt;devRead::ipDevNrSockNr&gt; &gt;::push_back(devRead::ipDevNrSockNr const&amp;) (stl_vector.h:834)
==7058==    by 0x8050406: devRead::mbNr(int&amp;, std::string, int) (devRead.cpp:118)
==7058==    by 0x804FB87: devRead::init(int&amp;, int, int, int, int, int, std::string, int, int) (devRead.cpp:28)
==7058==    by 0x8052727: main (watchDog.cpp:122)
==7058==
</code></pre>
<p>Das heißt, der Fehler tritt in Zeile 120 der devRead.cpp auf, in der Funktion devRead::mbNr(int&amp;, std::string, int). Da drunter steht, von wo aus diese Funktion aufgerufen wurde. Sie wurde also von devRead::init(int&amp;, int, int, int, int, int, std::string, int, int) aufgerufen, welche wiederum von main aufgerufen wurde (jeweils mit Zeilennummer des Aufrufs). Der Fehler selbst, Invalid read of size 4, bedeutet, dass 4 Byte (möglicherweise ein int?) gelesen wurden von einer Stelle, wo dein Programm normalerweise nicht lesen dürfte. valgrind fiel dazu auf, dass diese Stelle aber nur 8 Bytes hinter einer Stelle ist, die von deinem Programm allokiert wurde. Dies deutet stark da drauf hin, dass du hinter den letzten Index eines Arrays/Vectors (oder ähnliche Datenstruktur) zugreifst. Da valgrind auch noch auflistet, wie dieser Bereich reserviert wurde (main ruft devRead::init auf, ruft devRead::mbNr auf, ruft vector::push_back auf, welches dann nach ein paar Astraktionsschichten den Speicher reserviert), bestätigt dies, dass in der Funktion devRead::mbNr ein vector gefüllt wurde, aber dann hinter den letzten gültigen Index zugegriffen wurde.</p>
<p>Da du weder den Code von devRead::mbNr zeigst, noch in devRead::init überhaupt ein Aufruf einer solchen Funktion zu sehen ist, nehme ich mal an, dass diese Funktion entweder neu ist oder du vorher zu viel von deinem Code gekürzt hast. Jedenfalls kann ich ohne Code nicht auf den konkreten Fehler zeigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2369595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2369595</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 03 Dec 2013 19:09:37 GMT</pubDate></item><item><title><![CDATA[Reply to stringstream.str() bricht mit &amp;quot;malloc.c:3801:...&amp;quot; error ab on Tue, 21 Jan 2014 15:31:10 GMT]]></title><description><![CDATA[<p>Hi,<br />
Sorry das ich das erst jetzt schreibe, Ich hab seit längeren nicht mehr vorbeigeschaut.<br />
Zu deiner anmerkung:<br />
Ja da habe ich etwas zu stark gekürtzt.<br />
Dank des einsatzes von Valgrind habe ich die Fehler mittlerweile alle gefunden und beseitigt. Meine Programm Läuft entlich. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Also an diesme punkt noch mal Danke für die Hilfe an alle.</p>
<p>Mfg BabCom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2378777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2378777</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Tue, 21 Jan 2014 15:31:10 GMT</pubDate></item></channel></rss>