<?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[*** glibc detected *** double free or corruption (fasttop)]]></title><description><![CDATA[<p>Hallo Liebes Forum,<br />
Ich habe erneut ein Problme bei dem ich nicht mehr weiter weiss.<br />
und zwar wird bei diesem Programm immer am Ende folgender fehler ausgegeben.</p>
<pre><code>Das Programm WatchDog wird automatisch gestartet und Konfiguriert.
Neues Logfile erstellt
23.57
23.62
*** glibc detected *** /home/babcom/ELMOS/workspace/watchDog/Debug/watchDog: double free or corruption (fasttop): 0x080598c8 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x75ee2)[0x2abee2]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x1f)[0x1dc51f]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZNSs4_Rep10_M_destroyERKSaIcE+0x1b)[0x1c399b]
/usr/lib/i386-linux-gnu/libstdc++.so.6(+0x909dc)[0x1c39dc]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZNSsD1Ev+0x2e)[0x1c3a4e]
/home/babcom/ELMOS/workspace/watchDog/Debug/watchDog[0x804e958]
/home/babcom/ELMOS/workspace/watchDog/Debug/watchDog[0x8050aa0]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x24f4d3]
/home/babcom/ELMOS/workspace/watchDog/Debug/watchDog[0x8049bb1]
======= Memory map: ========
00110000-00130000 r-xp 00000000 08:06 653401     /lib/i386-linux-gnu/ld-2.15.so
00130000-00131000 r--p 0001f000 08:06 653401     /lib/i386-linux-gnu/ld-2.15.so
00131000-00132000 rw-p 00020000 08:06 653401     /lib/i386-linux-gnu/ld-2.15.so
00132000-00133000 r-xp 00000000 00:00 0          [vdso]
00133000-0020b000 r-xp 00000000 08:06 397246     /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
0020b000-0020c000 ---p 000d8000 08:06 397246     /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
0020c000-00210000 r--p 000d8000 08:06 397246     /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
00210000-00211000 rw-p 000dc000 08:06 397246     /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
00211000-00218000 rw-p 00000000 00:00 0 
00218000-00234000 r-xp 00000000 08:06 653631     /lib/i386-linux-gnu/libgcc_s.so.1
00234000-00235000 r--p 0001b000 08:06 653631     /lib/i386-linux-gnu/libgcc_s.so.1
00235000-00236000 rw-p 0001c000 08:06 653631     /lib/i386-linux-gnu/libgcc_s.so.1
00236000-003d9000 r-xp 00000000 08:06 653366     /lib/i386-linux-gnu/libc-2.15.so
003d9000-003db000 r--p 001a3000 08:06 653366     /lib/i386-linux-gnu/libc-2.15.so
003db000-003dc000 rw-p 001a5000 08:06 653366     /lib/i386-linux-gnu/libc-2.15.so
003dc000-003df000 rw-p 00000000 00:00 0 
003df000-00409000 r-xp 00000000 08:06 653400     /lib/i386-linux-gnu/libm-2.15.so
00409000-0040a000 r--p 00029000 08:06 653400     /lib/i386-linux-gnu/libm-2.15.so
0040a000-0040b000 rw-p 0002a000 08:06 653400     /lib/i386-linux-gnu/libm-2.15.so
08048000-08055000 r-xp 00000000 08:06 1599916    /home/babcom/ELMOS/workspace/watchDog/Debug/watchDog
08055000-08056000 r--p 0000c000 08:06 1599916    /home/babcom/ELMOS/workspace/watchDog/Debug/watchDog
08056000-08057000 rw-p 0000d000 08:06 1599916    /home/babcom/ELMOS/workspace/watchDog/Debug/watchDog
08057000-08078000 rw-p 00000000 00:00 0          [heap]
b7fe3000-b7fe6000 rw-p 00000000 00:00 0 
b7ffc000-b8000000 rw-p 00000000 00:00 0 
bffdf000-c0000000 rw-p 00000000 00:00 0          [stack]
</code></pre>
<p>Der Code in dem der Fehler auftritt.<br />
Der Fehler tritt immer auf wenn die außere while schleife am ende unterster teiel des codes)</p>
<pre><code>/********************************************************
 **	Module watchDog.cpp
 **	Created on	: 
 ** Last Work	:
 ** Author		: XXX
 **	Purpose		: Programm Kontroll Funktionen
 ** Description	: Dies ist das Main Modul der Anwendung, von hier aus werden alle anderen Funktionalitäten
 ** 			  Aufgerufen und ausgeführt
 ** 			  Desweiteren wird hier die ablaufsteuerung der anwendung realisiert.
 **
 **	Funktionen	:	Keine eigenen Funktionen -
 **
 **	Variablen	:	config-&gt; Objekt vom typ cfgRead liest das Configurations file aus
 **	Variablen	:	bconf-&gt; Objekt vom typ boxConfig (Speichert die Konfiguration der Box)
 **	Variablen	:	*dconf -&gt; Array vom typ devConfig (Speichert die Konfigurationsdaten der einzelnen Sensoren)
 **	Variablen	:	dread Objekt vom typ devRead, realisiert das auslesen der einzelnen Sensoren
 **	Variablen	:
 ********************************************************/

#include &lt;iostream&gt;

#ifndef WATCHDOG_H_
#include &quot;watchDog.h&quot;
#endif

using namespace std;

int main(int argc, char* argv[])
{
	//int error=0;
	int argvx = 0;
	string error;	//text beschreibung des fehlers
	int eno;		//error nummer
	//int ecount=0;
	if (argc &gt;1){//Programm Startet automatisch
		argvx = (int)argv[1];
		cout &lt;&lt; &quot;Das Programm WatchDog wird automatisch gestartet und Konfiguriert.&quot;&lt;&lt;endl;
	}else
	{
		cout &lt;&lt; &quot;Das Programm WatchDog wird Manuell ausgeführt.&quot;&lt;&lt;endl&lt;&lt; &quot;Bitte die Konfiguration bestätigen.&quot;&lt;&lt;endl;
	}

/***OBJEKTE*********************************************************/
	cfgRead config;
	boxConfig bconf;   // das boxConfig Objekt
	devConfig *dconf;  // Pointer auf ein Array von devConfig Objekten
	daemonice dmon;
/***OBJEKTE*********************************************************/

/***CONFIGURATION***************************************************/
	config.ReadBoxConfig(bconf);

	if (argc&lt;=1){  //wenn ohne parameter gestartet wird nicht ausführen
		cout &lt;&lt; &quot;Box-ID 			: &quot; &lt;&lt; bconf.getBoxId() &lt;&lt; endl;
		cout &lt;&lt; &quot;Device Anzahl		: &quot; &lt;&lt; bconf.getDevAnz() &lt;&lt; endl;
		cout &lt;&lt; &quot;Logfile Intervall	: &quot; &lt;&lt; bconf.getIntervall() &lt;&lt; &quot; int Minuten&quot;&lt;&lt; endl;
		cout &lt;&lt; &quot;Wenn alles stimmt bitte mit Enter bestaetigen ansonsten Str+C druecken.&quot; &lt;&lt; endl;
		getchar();
	}

	devRead dread(bconf.getDevAnz()); // in devRead das feld mit den sockets anlegen

	dconf = new devConfig[bconf.getDevAnz()];   // Feld f?r die devConfig Objekte erstellen (Speichert Informationen der Sensoren )

	for(int i=0; i&lt;bconf.getDevAnz(); i++)
	{
		config.ReadDevConfig(dconf[i]);
		if (argc&lt;=1){//wenn ohne parameter gestartet wird nicht ausführen
			cout &lt;&lt; &quot;Device Nr. 		: &quot; &lt;&lt; i+1 &lt;&lt; &quot;: &quot; &lt;&lt; endl;
			cout &lt;&lt; &quot;Adresse			: &quot; &lt;&lt; dconf[i].getAdresse() &lt;&lt; endl;
			cout &lt;&lt; &quot;Start Register 	: &quot; &lt;&lt; dconf[i].getStartReg()&lt;&lt; endl;
			cout &lt;&lt; &quot;Register Anzahl	: &quot; &lt;&lt; dconf[i].getRegNo() &lt;&lt; endl;
			cout &lt;&lt; &quot;ID des Device  	: &quot; &lt;&lt; dconf[i].getID() &lt;&lt; endl;
			cout &lt;&lt; &quot;Umrechnungsfaktor	: &quot; &lt;&lt; dconf[i].getValueInterpret() &lt;&lt; endl;
			cout &lt;&lt; &quot;Device Intervall	: &quot; &lt;&lt; dconf[i].getIntervall() &lt;&lt; &quot; in Minuten&quot; &lt;&lt; endl;
			cout &lt;&lt; &quot;Wenn alles stimmt bitte mit Enter bestaetigen ansonsten Str+C druecken.&quot; &lt;&lt; endl;
			getchar();

		}
		try{
			dread.init(dconf[i].getAdresse(),i); //socket anlagen und verbinden
		}catch(SockExcept&amp; s){
		//hier fehler posten
			cout&lt;&lt; error &lt;&lt; endl;
		}
	} //Config stimmt

/***CONFIGURATION***************************************************/

/***IN EINGENSTÄNDIGEN PROZESS UMWANDELN****************************/

	if (argvx!=0){//wenn ohne parameter gestartet wird nicht ausführen
		//dmon.daemon(); // rausnemhmen für debugging auf pc
		//cout &lt;&lt; &quot;Programm wird im hintergrund ausgeführt&quot; &lt;&lt; endl;
	}

/***IN EINGENSTÄNDIGEN PROZESS UMWANDELN****************************/

/***DEVICE AUSLESEN*************************************************/

	//Timer Starten;
	bconf.Start();
	for(int j = 0; j&lt; bconf.getDevAnz(); j++)
	{
		dconf[j].Start();
		//dconf[j].setIntervall(dconf[j].getIntervall());
	}

	while(true)
	{
		dataWrite dWrite;
		dWrite.header(bconf.getBoxId()); //try catch einbauen
		cout&lt;&lt;&quot;Neues Logfile erstellt&quot;&lt;&lt;endl;

		while(bconf.getTimerInt()==0)//wenn getLogTimerInt gleich 1 dann neues logfile erstellen
		{
			for(int i = 0; i&lt; bconf.getDevAnz(); i++) // lese alle devices aus
			{
				if(dconf[i].getTimerInt()==1)	//wenn timer abgelaufen lese aus - sonst tuhe nichts
				{
					try{
					dread.readValue(dconf[i].getValueInterpret(),dconf[i].getRegNo(),dconf[i].getStartReg(), i);

					dWrite.body(dconf[i].getID(), dread.getValue()); //Wert ermitteln und schreiben funktioniert
					cout &lt;&lt; dread.getValue() &lt;&lt; endl;
					sleep(1);//?????????????
				//	ecount =0;

					}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);

					}catch(SockExcept&amp; s){
						/*Fehler im netzwerk (socket modul)*/
						error=s.get_SockExcept(eno);// denn error abrfagen
						dWrite.error(dconf[i].getID(), eno, error);
					}
				}
			}
		}

		dWrite.footer();
/*Hier entsteht der fehler*/
		dWrite.~dataWrite();
/*Fehler ende*/
	}
	/*AUFRÄUMEN*/
	for(int i=0; i&lt;bconf.getDevAnz(); i++){
		dconf[i].~devConfig();
	}

	 delete [] dconf;
	 bconf.~boxConfig();
	 config.~cfgRead();
	 dread.~devRead();
	 dmon.~daemonice();

	return(0);
	//exit(EXIT_SUCCESS);
};
</code></pre>
<p>im destruktor des dWrite Objektes wurd ledigtlich der filehandler für das Aktuelle logfile geschlossen.</p>
<pre><code>dataWrite::~dataWrite()
{
dateb.close();
}
</code></pre>
<p>der Filehandler &quot;daten&quot; wird im Konstruktor des entsprechendem Objektes angelegt.</p>
<p>Ich hoffe das irgendjemand in der Lage ist nachzuvollziehen was ich hier machen wollte und auch siet wo ich den Fehler eingebaut habe.</p>
<p>PS: bei dem Dbuggen hat sich hir mitunter recht seltsammes Verhalten eingestellt. So ist z.B. bei einem durchlauf der Destruktor zweimal aufgerufen worden.(mit einzelschritten durchgegangen). Meistens schmirt es aber sofort ab nach dem der Destruktor komplett abgearbeitet ist und der Programm Zeiger eine zeile weiter ist.(schlißende Klammer der äußeren while schleife).</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/318427/glibc-detected-double-free-or-corruption-fasttop</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 09:25:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/318427.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Jul 2013 14:39:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to *** glibc detected *** double free or corruption (fasttop) on Fri, 12 Jul 2013 14:39:26 GMT]]></title><description><![CDATA[<p>Hallo Liebes Forum,<br />
Ich habe erneut ein Problme bei dem ich nicht mehr weiter weiss.<br />
und zwar wird bei diesem Programm immer am Ende folgender fehler ausgegeben.</p>
<pre><code>Das Programm WatchDog wird automatisch gestartet und Konfiguriert.
Neues Logfile erstellt
23.57
23.62
*** glibc detected *** /home/babcom/ELMOS/workspace/watchDog/Debug/watchDog: double free or corruption (fasttop): 0x080598c8 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x75ee2)[0x2abee2]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZdlPv+0x1f)[0x1dc51f]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZNSs4_Rep10_M_destroyERKSaIcE+0x1b)[0x1c399b]
/usr/lib/i386-linux-gnu/libstdc++.so.6(+0x909dc)[0x1c39dc]
/usr/lib/i386-linux-gnu/libstdc++.so.6(_ZNSsD1Ev+0x2e)[0x1c3a4e]
/home/babcom/ELMOS/workspace/watchDog/Debug/watchDog[0x804e958]
/home/babcom/ELMOS/workspace/watchDog/Debug/watchDog[0x8050aa0]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x24f4d3]
/home/babcom/ELMOS/workspace/watchDog/Debug/watchDog[0x8049bb1]
======= Memory map: ========
00110000-00130000 r-xp 00000000 08:06 653401     /lib/i386-linux-gnu/ld-2.15.so
00130000-00131000 r--p 0001f000 08:06 653401     /lib/i386-linux-gnu/ld-2.15.so
00131000-00132000 rw-p 00020000 08:06 653401     /lib/i386-linux-gnu/ld-2.15.so
00132000-00133000 r-xp 00000000 00:00 0          [vdso]
00133000-0020b000 r-xp 00000000 08:06 397246     /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
0020b000-0020c000 ---p 000d8000 08:06 397246     /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
0020c000-00210000 r--p 000d8000 08:06 397246     /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
00210000-00211000 rw-p 000dc000 08:06 397246     /usr/lib/i386-linux-gnu/libstdc++.so.6.0.16
00211000-00218000 rw-p 00000000 00:00 0 
00218000-00234000 r-xp 00000000 08:06 653631     /lib/i386-linux-gnu/libgcc_s.so.1
00234000-00235000 r--p 0001b000 08:06 653631     /lib/i386-linux-gnu/libgcc_s.so.1
00235000-00236000 rw-p 0001c000 08:06 653631     /lib/i386-linux-gnu/libgcc_s.so.1
00236000-003d9000 r-xp 00000000 08:06 653366     /lib/i386-linux-gnu/libc-2.15.so
003d9000-003db000 r--p 001a3000 08:06 653366     /lib/i386-linux-gnu/libc-2.15.so
003db000-003dc000 rw-p 001a5000 08:06 653366     /lib/i386-linux-gnu/libc-2.15.so
003dc000-003df000 rw-p 00000000 00:00 0 
003df000-00409000 r-xp 00000000 08:06 653400     /lib/i386-linux-gnu/libm-2.15.so
00409000-0040a000 r--p 00029000 08:06 653400     /lib/i386-linux-gnu/libm-2.15.so
0040a000-0040b000 rw-p 0002a000 08:06 653400     /lib/i386-linux-gnu/libm-2.15.so
08048000-08055000 r-xp 00000000 08:06 1599916    /home/babcom/ELMOS/workspace/watchDog/Debug/watchDog
08055000-08056000 r--p 0000c000 08:06 1599916    /home/babcom/ELMOS/workspace/watchDog/Debug/watchDog
08056000-08057000 rw-p 0000d000 08:06 1599916    /home/babcom/ELMOS/workspace/watchDog/Debug/watchDog
08057000-08078000 rw-p 00000000 00:00 0          [heap]
b7fe3000-b7fe6000 rw-p 00000000 00:00 0 
b7ffc000-b8000000 rw-p 00000000 00:00 0 
bffdf000-c0000000 rw-p 00000000 00:00 0          [stack]
</code></pre>
<p>Der Code in dem der Fehler auftritt.<br />
Der Fehler tritt immer auf wenn die außere while schleife am ende unterster teiel des codes)</p>
<pre><code>/********************************************************
 **	Module watchDog.cpp
 **	Created on	: 
 ** Last Work	:
 ** Author		: XXX
 **	Purpose		: Programm Kontroll Funktionen
 ** Description	: Dies ist das Main Modul der Anwendung, von hier aus werden alle anderen Funktionalitäten
 ** 			  Aufgerufen und ausgeführt
 ** 			  Desweiteren wird hier die ablaufsteuerung der anwendung realisiert.
 **
 **	Funktionen	:	Keine eigenen Funktionen -
 **
 **	Variablen	:	config-&gt; Objekt vom typ cfgRead liest das Configurations file aus
 **	Variablen	:	bconf-&gt; Objekt vom typ boxConfig (Speichert die Konfiguration der Box)
 **	Variablen	:	*dconf -&gt; Array vom typ devConfig (Speichert die Konfigurationsdaten der einzelnen Sensoren)
 **	Variablen	:	dread Objekt vom typ devRead, realisiert das auslesen der einzelnen Sensoren
 **	Variablen	:
 ********************************************************/

#include &lt;iostream&gt;

#ifndef WATCHDOG_H_
#include &quot;watchDog.h&quot;
#endif

using namespace std;

int main(int argc, char* argv[])
{
	//int error=0;
	int argvx = 0;
	string error;	//text beschreibung des fehlers
	int eno;		//error nummer
	//int ecount=0;
	if (argc &gt;1){//Programm Startet automatisch
		argvx = (int)argv[1];
		cout &lt;&lt; &quot;Das Programm WatchDog wird automatisch gestartet und Konfiguriert.&quot;&lt;&lt;endl;
	}else
	{
		cout &lt;&lt; &quot;Das Programm WatchDog wird Manuell ausgeführt.&quot;&lt;&lt;endl&lt;&lt; &quot;Bitte die Konfiguration bestätigen.&quot;&lt;&lt;endl;
	}

/***OBJEKTE*********************************************************/
	cfgRead config;
	boxConfig bconf;   // das boxConfig Objekt
	devConfig *dconf;  // Pointer auf ein Array von devConfig Objekten
	daemonice dmon;
/***OBJEKTE*********************************************************/

/***CONFIGURATION***************************************************/
	config.ReadBoxConfig(bconf);

	if (argc&lt;=1){  //wenn ohne parameter gestartet wird nicht ausführen
		cout &lt;&lt; &quot;Box-ID 			: &quot; &lt;&lt; bconf.getBoxId() &lt;&lt; endl;
		cout &lt;&lt; &quot;Device Anzahl		: &quot; &lt;&lt; bconf.getDevAnz() &lt;&lt; endl;
		cout &lt;&lt; &quot;Logfile Intervall	: &quot; &lt;&lt; bconf.getIntervall() &lt;&lt; &quot; int Minuten&quot;&lt;&lt; endl;
		cout &lt;&lt; &quot;Wenn alles stimmt bitte mit Enter bestaetigen ansonsten Str+C druecken.&quot; &lt;&lt; endl;
		getchar();
	}

	devRead dread(bconf.getDevAnz()); // in devRead das feld mit den sockets anlegen

	dconf = new devConfig[bconf.getDevAnz()];   // Feld f?r die devConfig Objekte erstellen (Speichert Informationen der Sensoren )

	for(int i=0; i&lt;bconf.getDevAnz(); i++)
	{
		config.ReadDevConfig(dconf[i]);
		if (argc&lt;=1){//wenn ohne parameter gestartet wird nicht ausführen
			cout &lt;&lt; &quot;Device Nr. 		: &quot; &lt;&lt; i+1 &lt;&lt; &quot;: &quot; &lt;&lt; endl;
			cout &lt;&lt; &quot;Adresse			: &quot; &lt;&lt; dconf[i].getAdresse() &lt;&lt; endl;
			cout &lt;&lt; &quot;Start Register 	: &quot; &lt;&lt; dconf[i].getStartReg()&lt;&lt; endl;
			cout &lt;&lt; &quot;Register Anzahl	: &quot; &lt;&lt; dconf[i].getRegNo() &lt;&lt; endl;
			cout &lt;&lt; &quot;ID des Device  	: &quot; &lt;&lt; dconf[i].getID() &lt;&lt; endl;
			cout &lt;&lt; &quot;Umrechnungsfaktor	: &quot; &lt;&lt; dconf[i].getValueInterpret() &lt;&lt; endl;
			cout &lt;&lt; &quot;Device Intervall	: &quot; &lt;&lt; dconf[i].getIntervall() &lt;&lt; &quot; in Minuten&quot; &lt;&lt; endl;
			cout &lt;&lt; &quot;Wenn alles stimmt bitte mit Enter bestaetigen ansonsten Str+C druecken.&quot; &lt;&lt; endl;
			getchar();

		}
		try{
			dread.init(dconf[i].getAdresse(),i); //socket anlagen und verbinden
		}catch(SockExcept&amp; s){
		//hier fehler posten
			cout&lt;&lt; error &lt;&lt; endl;
		}
	} //Config stimmt

/***CONFIGURATION***************************************************/

/***IN EINGENSTÄNDIGEN PROZESS UMWANDELN****************************/

	if (argvx!=0){//wenn ohne parameter gestartet wird nicht ausführen
		//dmon.daemon(); // rausnemhmen für debugging auf pc
		//cout &lt;&lt; &quot;Programm wird im hintergrund ausgeführt&quot; &lt;&lt; endl;
	}

/***IN EINGENSTÄNDIGEN PROZESS UMWANDELN****************************/

/***DEVICE AUSLESEN*************************************************/

	//Timer Starten;
	bconf.Start();
	for(int j = 0; j&lt; bconf.getDevAnz(); j++)
	{
		dconf[j].Start();
		//dconf[j].setIntervall(dconf[j].getIntervall());
	}

	while(true)
	{
		dataWrite dWrite;
		dWrite.header(bconf.getBoxId()); //try catch einbauen
		cout&lt;&lt;&quot;Neues Logfile erstellt&quot;&lt;&lt;endl;

		while(bconf.getTimerInt()==0)//wenn getLogTimerInt gleich 1 dann neues logfile erstellen
		{
			for(int i = 0; i&lt; bconf.getDevAnz(); i++) // lese alle devices aus
			{
				if(dconf[i].getTimerInt()==1)	//wenn timer abgelaufen lese aus - sonst tuhe nichts
				{
					try{
					dread.readValue(dconf[i].getValueInterpret(),dconf[i].getRegNo(),dconf[i].getStartReg(), i);

					dWrite.body(dconf[i].getID(), dread.getValue()); //Wert ermitteln und schreiben funktioniert
					cout &lt;&lt; dread.getValue() &lt;&lt; endl;
					sleep(1);//?????????????
				//	ecount =0;

					}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);

					}catch(SockExcept&amp; s){
						/*Fehler im netzwerk (socket modul)*/
						error=s.get_SockExcept(eno);// denn error abrfagen
						dWrite.error(dconf[i].getID(), eno, error);
					}
				}
			}
		}

		dWrite.footer();
/*Hier entsteht der fehler*/
		dWrite.~dataWrite();
/*Fehler ende*/
	}
	/*AUFRÄUMEN*/
	for(int i=0; i&lt;bconf.getDevAnz(); i++){
		dconf[i].~devConfig();
	}

	 delete [] dconf;
	 bconf.~boxConfig();
	 config.~cfgRead();
	 dread.~devRead();
	 dmon.~daemonice();

	return(0);
	//exit(EXIT_SUCCESS);
};
</code></pre>
<p>im destruktor des dWrite Objektes wurd ledigtlich der filehandler für das Aktuelle logfile geschlossen.</p>
<pre><code>dataWrite::~dataWrite()
{
dateb.close();
}
</code></pre>
<p>der Filehandler &quot;daten&quot; wird im Konstruktor des entsprechendem Objektes angelegt.</p>
<p>Ich hoffe das irgendjemand in der Lage ist nachzuvollziehen was ich hier machen wollte und auch siet wo ich den Fehler eingebaut habe.</p>
<p>PS: bei dem Dbuggen hat sich hir mitunter recht seltsammes Verhalten eingestellt. So ist z.B. bei einem durchlauf der Destruktor zweimal aufgerufen worden.(mit einzelschritten durchgegangen). Meistens schmirt es aber sofort ab nach dem der Destruktor komplett abgearbeitet ist und der Programm Zeiger eine zeile weiter ist.(schlißende Klammer der äußeren while schleife).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2338439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2338439</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 12 Jul 2013 14:39:26 GMT</pubDate></item><item><title><![CDATA[Reply to *** glibc detected *** double free or corruption (fasttop) on Fri, 12 Jul 2013 14:54:46 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> Stehen da wirklich manuelle Destruktoraufrufe?</p>
<p>Überhaupt: new[] -&gt; vector. Und unbedingt mal Anfängerliteratur zu Konstruktoren, Destruktoren und Gültigkeitsbereichen lesen. Ganz dringend!<br />
Siehe Links in meiner Signatur und <a href="http://www.c-plusplus.net/forum/310212" rel="nofollow">http://www.c-plusplus.net/forum/310212</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2338441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2338441</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 12 Jul 2013 14:54:46 GMT</pubDate></item><item><title><![CDATA[Reply to *** glibc detected *** double free or corruption (fasttop) on Fri, 12 Jul 2013 15:25:45 GMT]]></title><description><![CDATA[<p>Tja also kann man wohl sagen das eigen dummheit bestraft wird.^^</p>
<p>is ja klar das eine fehler kommt wenn mann das objekt versucht noch einmal extra zu zerstören. KA was mir das in den Kopf kahm das ich das da reingemacht habe.<br />
naja egal jetzt gehts wieder.<br />
MFG BabCom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2338447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2338447</guid><dc:creator><![CDATA[BabCom]]></dc:creator><pubDate>Fri, 12 Jul 2013 15:25:45 GMT</pubDate></item></channel></rss>