<?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 float - Zuweisung]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich verzweifle langsam an einer gar nicht so schwierigen Sache...<br />
ich will eine einfache Maximums- / Minimumsbestimmung auf drei Vektoren machen, Ergebnis ist ein Vektor mit maximalem/minimalem x1,x2 und x3-Wert.<br />
Folgender Code produziert einen Segmentation-Fault:</p>
<pre><code class="language-cpp">float temp=v[0][0]&lt;v[1][0]?v[0][0]:v[1][0];
min[0]=temp;
</code></pre>
<p>Unabhängig von der Funktionalität, mich wundert dass folgender Code läuft:</p>
<pre><code class="language-cpp">float temp=v[0][0]&lt;v[1][0]?v[0][0]:v[1][0];
min[0]=3;
</code></pre>
<p>btw, mein eigentlicher Code war (ebenfalls Segmentation fault):</p>
<pre><code class="language-cpp">min[1]=minf(minf(v[0][1],v[1][1]),v[2][1])
</code></pre>
<p>bereits vorgegeben war:<br />
inline float minf(const float a, const float b){ ...</p>
<p>Danke schonmal für eure Hilfe<br />
BeefBonanza</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/252558/segfault-bei-float-zuweisung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 09:29:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252558.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Oct 2009 14:24:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to segfault bei float - Zuweisung on Wed, 21 Oct 2009 14:24:59 GMT]]></title><description><![CDATA[<p>Hallo zusammen,<br />
ich verzweifle langsam an einer gar nicht so schwierigen Sache...<br />
ich will eine einfache Maximums- / Minimumsbestimmung auf drei Vektoren machen, Ergebnis ist ein Vektor mit maximalem/minimalem x1,x2 und x3-Wert.<br />
Folgender Code produziert einen Segmentation-Fault:</p>
<pre><code class="language-cpp">float temp=v[0][0]&lt;v[1][0]?v[0][0]:v[1][0];
min[0]=temp;
</code></pre>
<p>Unabhängig von der Funktionalität, mich wundert dass folgender Code läuft:</p>
<pre><code class="language-cpp">float temp=v[0][0]&lt;v[1][0]?v[0][0]:v[1][0];
min[0]=3;
</code></pre>
<p>btw, mein eigentlicher Code war (ebenfalls Segmentation fault):</p>
<pre><code class="language-cpp">min[1]=minf(minf(v[0][1],v[1][1]),v[2][1])
</code></pre>
<p>bereits vorgegeben war:<br />
inline float minf(const float a, const float b){ ...</p>
<p>Danke schonmal für eure Hilfe<br />
BeefBonanza</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1795832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1795832</guid><dc:creator><![CDATA[BeefBonanza]]></dc:creator><pubDate>Wed, 21 Oct 2009 14:24:59 GMT</pubDate></item><item><title><![CDATA[Reply to segfault bei float - Zuweisung on Wed, 21 Oct 2009 14:34:49 GMT]]></title><description><![CDATA[<p>Du suchst den Fehler wahrscheinlich an einer falschen Stelle. Syntaktisch ist der Code offensichtlich in Ordnung, sonst könntest Du es ja nicht kompilieren. Aber ich rate mal, dass v und/oder min ein Zeiger ist, und dass Du auf Speicherbereiche zugreifst, in denen Du nichts verloren hast.</p>
<p>Mehr kann man eigentlich nicht zu deinem <em>unvollständigen</em> Code sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1795836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1795836</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Wed, 21 Oct 2009 14:34:49 GMT</pubDate></item><item><title><![CDATA[Reply to segfault bei float - Zuweisung on Wed, 21 Oct 2009 14:54:53 GMT]]></title><description><![CDATA[<p>v ist eine Vec3-Instanz... wichtig sind denke ich folgende oben verwendete Dinge:<br />
[] Operator in Vec3:</p>
<pre><code class="language-cpp">struct Vec3 {
  float x, y, z;

  inline float&amp; Vec3::operator[] (const int i) {
  return (&amp;x)[i];
  }

  inline float Vec3::operator[] (const int i) const {
  return (&amp;x)[i];
  }
</code></pre>
<p>Evtl. ist schreiben über den []-Operator nicht möglich?! Über min.x führt zu segmentation fault...</p>
<p>Funktion minf:</p>
<pre><code class="language-cpp">inline float minf(const float a, const float b) {
  return a &lt; b ? a : b;
}
</code></pre>
<p>Irgendwelche neuen Ansätze daraus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1795847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1795847</guid><dc:creator><![CDATA[BeefBonanza]]></dc:creator><pubDate>Wed, 21 Oct 2009 14:54:53 GMT</pubDate></item><item><title><![CDATA[Reply to segfault bei float - Zuweisung on Wed, 21 Oct 2009 15:45:41 GMT]]></title><description><![CDATA[<p>BeefBonanza schrieb:</p>
<blockquote>
<p>Irgendwelche neuen Ansätze daraus?</p>
</blockquote>
<p>Das ist ziemlicher Murks. Niemand garantiert dir, dass x, y und z lückenlos und in dieser Reihenfolge im Speicher abgelegt sind. Nimm ein Array.</p>
<p>Off-Topic: was versprichst du dir vom <code>const</code> in den Parameterlisten deiner Funktionen? Nicht dass es falsch wäre, ich frage mich nur warum man sowas macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1795869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1795869</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Wed, 21 Oct 2009 15:45:41 GMT</pubDate></item><item><title><![CDATA[Reply to segfault bei float - Zuweisung on Wed, 21 Oct 2009 16:04:57 GMT]]></title><description><![CDATA[<p>BeefBonanza schrieb:</p>
<blockquote>
<pre><code class="language-cpp">struct Vec3 {
  float x, y, z;
  
  inline float&amp; Vec3::operator[] (const int i) {
  return (&amp;x)[i];
  }

  inline float Vec3::operator[] (const int i) const {
  return (&amp;x)[i];
  }
</code></pre>
</blockquote>
<p>Kann mich nur anschließen: Murks!</p>
<p>Wenn Du eine der beiden Funktionen mit i!=0 aufrufst --&gt; undefiniertes Verhalten. Zeigerarithmetik ist nur erlaubt, solange der resultierende Zeiger noch &quot;zum gleichen Array gehört&quot;. Die Variablen x, y und z sind dabei als 1-elementige Arrays zu betrachten. (&amp;x)+0, (&amp;x)+1, (&amp;x)[0], *((&amp;x)+0) ist so ziemlich das einzige, was erlaubt ist.</p>
<p>Was ist denn nun der Typ von v und min? Zeig doch mal mehr relevanten Code!</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1795876</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1795876</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Wed, 21 Oct 2009 16:04:57 GMT</pubDate></item></channel></rss>