<?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[Std::map Pointer (Speicherzugriffsfehler)]]></title><description><![CDATA[<p>Hallo,</p>
<p>vorweg gesagt: Ich bin ein C++ Anfänger also seit nicht böse mit mir, wenn das banale Fehler sind, die man eig können sollte.</p>
<p>Ich bin jetzt am Weiterentwickeln unseres Projektes in C++:<br />
<a href="https://github.com/THOMAS-Projekt/THOMAS/blob/ArduinoKommunikation/MotorControl.cpp#L246" rel="nofollow">https://github.com/THOMAS-Projekt/THOMAS/blob/ArduinoKommunikation/MotorControl.cpp#L246</a></p>
<p>In dieser Zeile habe ich folgendes eingefügt:</p>
<pre><code>// Heartbeat
		case 3:
		{
			_lastHeartbeat-&gt;operator[](1) = 123456;
			break;
		}
</code></pre>
<p>Diese funktion (ComputeClientCommand) wird von der TCPServer Klasse in einem seperaten Thread ausgeführt. Ich möchte jetzt, allerdings in die _lastHeartbeat std::map den aktuellen Timestamp eintragen (Die Zahl ist nur zu Testzwecken).</p>
<p>Ich habe die Map auch im Header als Pointer definiert, da es sonst einen terminate called after throwing an instance of 'std::system_error' Fehler gibt. (habe dort _lastHeartbeat[0] = 123456 verwendet, da -&gt; nicht auf einem non-pointer funktioniert):</p>
<pre><code>// Heartbeat-Timestamp Map
std::map&lt;int, unsigned long&gt; *_lastHeartbeat;
</code></pre>
<p>Wenn ich jetzt versuche mit -&gt;operator[](1) = 123456; den Wert zu setzten gibt es nur einen Speicherzugriffsfehler.</p>
<p>Ich habe es auch bereits mit mutex-&gt;lock() versucht, da es ein anderer Thread ist, allerdings half dies auch nicht.</p>
<p>Hat irgendeiner eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/331155/std-map-pointer-speicherzugriffsfehler</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 22:19:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331155.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Feb 2015 16:57:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Std::map Pointer (Speicherzugriffsfehler) on Fri, 13 Feb 2015 16:58:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>vorweg gesagt: Ich bin ein C++ Anfänger also seit nicht böse mit mir, wenn das banale Fehler sind, die man eig können sollte.</p>
<p>Ich bin jetzt am Weiterentwickeln unseres Projektes in C++:<br />
<a href="https://github.com/THOMAS-Projekt/THOMAS/blob/ArduinoKommunikation/MotorControl.cpp#L246" rel="nofollow">https://github.com/THOMAS-Projekt/THOMAS/blob/ArduinoKommunikation/MotorControl.cpp#L246</a></p>
<p>In dieser Zeile habe ich folgendes eingefügt:</p>
<pre><code>// Heartbeat
		case 3:
		{
			_lastHeartbeat-&gt;operator[](1) = 123456;
			break;
		}
</code></pre>
<p>Diese funktion (ComputeClientCommand) wird von der TCPServer Klasse in einem seperaten Thread ausgeführt. Ich möchte jetzt, allerdings in die _lastHeartbeat std::map den aktuellen Timestamp eintragen (Die Zahl ist nur zu Testzwecken).</p>
<p>Ich habe die Map auch im Header als Pointer definiert, da es sonst einen terminate called after throwing an instance of 'std::system_error' Fehler gibt. (habe dort _lastHeartbeat[0] = 123456 verwendet, da -&gt; nicht auf einem non-pointer funktioniert):</p>
<pre><code>// Heartbeat-Timestamp Map
std::map&lt;int, unsigned long&gt; *_lastHeartbeat;
</code></pre>
<p>Wenn ich jetzt versuche mit -&gt;operator[](1) = 123456; den Wert zu setzten gibt es nur einen Speicherzugriffsfehler.</p>
<p>Ich habe es auch bereits mit mutex-&gt;lock() versucht, da es ein anderer Thread ist, allerdings half dies auch nicht.</p>
<p>Hat irgendeiner eine Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2442617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442617</guid><dc:creator><![CDATA[Waishon]]></dc:creator><pubDate>Fri, 13 Feb 2015 16:58:25 GMT</pubDate></item><item><title><![CDATA[Reply to Std::map Pointer (Speicherzugriffsfehler) on Fri, 13 Feb 2015 17:07:36 GMT]]></title><description><![CDATA[<p>Es gibt normalerweise keinen Grund, std::map in einen pointer zu packen.</p>
<p>Wenn doch, dann sollte man nicht</p>
<pre><code>_lastHeartbeat-&gt;operator[](1)
</code></pre>
<p>sondern</p>
<pre><code>(*_lastHeartbeat)[1]
</code></pre>
<p>schreiben.</p>
<p>EDIT: Wenn man nicht genau weiss, was man tut, oder nicht begruenden kann, warum man es genau so macht und nicht anders, sollte man sich mit multithreading gar nicht erst beschaeftigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2442619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442619</guid><dc:creator><![CDATA[Marthog]]></dc:creator><pubDate>Fri, 13 Feb 2015 17:07:36 GMT</pubDate></item><item><title><![CDATA[Reply to Std::map Pointer (Speicherzugriffsfehler) on Fri, 13 Feb 2015 17:18:05 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23821">@Marthog</a></p>
<p>Wenn ich es ohne Pointer im Header definiere, bekomme ich folgende Fehlermeldung</p>
<pre><code>terminate called after throwing an instance of 'std::system_error'
  what():  Invalid argument
Abgebrochen (Speicherabzug geschrieben)
</code></pre>
<p>Edit:// Liest du meinen Thread überhaupt?: Ich zietiere: &quot;Ich bin jetzt am Weiterentwickeln unseres Projektes in C++:&quot; , d.h ich habe es nicht geschrieben mit den Threads, sondern lerne jetzt C++ um es weiter führen zu können. Scheinbar dürfen Anfänger ja keine Fragen stellen, um sich &quot;fortzubilden&quot;. Wenn ich es wüsste, dann würde ich auch kein Forum aufsuchen, um diese Frage zu stellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2442620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442620</guid><dc:creator><![CDATA[Waishon]]></dc:creator><pubDate>Fri, 13 Feb 2015 17:18:05 GMT</pubDate></item><item><title><![CDATA[Reply to Std::map Pointer (Speicherzugriffsfehler) on Fri, 13 Feb 2015 17:40:11 GMT]]></title><description><![CDATA[<p>Waishon schrieb:</p>
<blockquote>
<p>Scheinbar dürfen Anfänger ja keine Fragen stellen, um sich &quot;fortzubilden&quot;. Wenn ich es wüsste, dann würde ich auch kein Forum aufsuchen, um diese Frage zu stellen.</p>
</blockquote>
<p>Marthog will dich nur darauf hinweisen, daß du vielleicht zuerst C++ lernen und dich mit der STL beschäftigen solltest, bevor du dich an ein bestehendes Projekt wagst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2442623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442623</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Fri, 13 Feb 2015 17:40:11 GMT</pubDate></item><item><title><![CDATA[Reply to Std::map Pointer (Speicherzugriffsfehler) on Fri, 13 Feb 2015 17:50:28 GMT]]></title><description><![CDATA[<p>Ja, danke <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>
<p>Hatte es falsch interpretiert, sorry. Ich denke ich werde mir ein Buch/PDF kaufen/downloaden und das mal durchgehen. Es ist ja nicht so, dass ich keine Erfahrung im Programmieren habe, ich beherrsche sowohl PHP und Java sehr gut, allerdings verzweifel ich gerade an diesem einen Problem (und C++ ist speziell im Vergleich zu Java und PHP :D) Die ArduinoProtocol.cpp hatte ich auch schon mit wenigen C++ Erfahrungen geschrieben.</p>
<p>Wäre also trotzdem toll, wenn einer mir sagen könnte wo das Problem liegt bzw ein Hinweis <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/2442625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442625</guid><dc:creator><![CDATA[Waishon]]></dc:creator><pubDate>Fri, 13 Feb 2015 17:50:28 GMT</pubDate></item><item><title><![CDATA[Reply to Std::map Pointer (Speicherzugriffsfehler) on Fri, 13 Feb 2015 17:58:07 GMT]]></title><description><![CDATA[<p>Mache die map ohne Pointer und schaue mit einem Debugger, wo die Exception geworfen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2442626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2442626</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 13 Feb 2015 17:58:07 GMT</pubDate></item></channel></rss>