<?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[Frage zu new &amp;amp; delete]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin neu hier im Forum und bin schon seit einiger Zeit an C und C++ dran. Ich würde mich als fortgeschrittener Anfänger bezeichnen <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>So nun zu meiner Frage:</p>
<pre><code>#include &lt;cstdlib&gt; 
#include &lt;ctime&gt;
#include &lt;iostream&gt;

using namespace std;

int main() {
  double** matrix; //Zeiger auf Zeiger mit dem Namen matrix
  int dim;

  cout &lt;&lt; &quot;Dimension eingeben: &quot;;
  cin &gt;&gt; dim;

  //Speicher fuer dim x dim  Matrix anfordern
  double size=(sizeof(double*)*dim); //zum Testen
  cout &lt;&lt; &quot;\n&quot; &lt;&lt; size; //zum Testen
  matrix = static_cast&lt;double&gt;(new double(sizeof(double*)*dim));

  /*
  matrix = (double**)malloc(sizeof(double*)*dim);
  for(int i=0 ; i&lt;dim ; i++) {
    matrix[i] = (double*)malloc(sizeof(double)*dim);
  }
  */
</code></pre>
<p>Es geht darum, das <strong>statt maloc und free new und delet</strong> verwendet werden sollen (ursprüngliche Code wurde mit /* */ auskomentiert ab Zeile 20).<br />
Ich stolper jetzt schon seit 2h über die Speicherzuweisung von new.</p>
<p>Als Fehler bekomme ich nun: &quot;invalid static_cast from type 'double*' to type 'double'</p>
<p>Ich bekomme es zur Zeit nicht hin den Zeiger auf den Zeiger mit dem Namen matrix so zu initialisieren, damit der Speicherbereich der zu erwartenden Größe reserviert wird.</p>
<p>Ich bin für Tips, Erklärungen, Hinweise sehr Dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/304530/frage-zu-new-amp-delete</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 18:45:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/304530.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 Jun 2012 12:59:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu new &amp;amp; delete on Fri, 08 Jun 2012 12:59:46 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin neu hier im Forum und bin schon seit einiger Zeit an C und C++ dran. Ich würde mich als fortgeschrittener Anfänger bezeichnen <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>So nun zu meiner Frage:</p>
<pre><code>#include &lt;cstdlib&gt; 
#include &lt;ctime&gt;
#include &lt;iostream&gt;

using namespace std;

int main() {
  double** matrix; //Zeiger auf Zeiger mit dem Namen matrix
  int dim;

  cout &lt;&lt; &quot;Dimension eingeben: &quot;;
  cin &gt;&gt; dim;

  //Speicher fuer dim x dim  Matrix anfordern
  double size=(sizeof(double*)*dim); //zum Testen
  cout &lt;&lt; &quot;\n&quot; &lt;&lt; size; //zum Testen
  matrix = static_cast&lt;double&gt;(new double(sizeof(double*)*dim));

  /*
  matrix = (double**)malloc(sizeof(double*)*dim);
  for(int i=0 ; i&lt;dim ; i++) {
    matrix[i] = (double*)malloc(sizeof(double)*dim);
  }
  */
</code></pre>
<p>Es geht darum, das <strong>statt maloc und free new und delet</strong> verwendet werden sollen (ursprüngliche Code wurde mit /* */ auskomentiert ab Zeile 20).<br />
Ich stolper jetzt schon seit 2h über die Speicherzuweisung von new.</p>
<p>Als Fehler bekomme ich nun: &quot;invalid static_cast from type 'double*' to type 'double'</p>
<p>Ich bekomme es zur Zeit nicht hin den Zeiger auf den Zeiger mit dem Namen matrix so zu initialisieren, damit der Speicherbereich der zu erwartenden Größe reserviert wird.</p>
<p>Ich bin für Tips, Erklärungen, Hinweise sehr Dankbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2220987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220987</guid><dc:creator><![CDATA[Outerheaven]]></dc:creator><pubDate>Fri, 08 Jun 2012 12:59:46 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu new &amp;amp; delete on Fri, 08 Jun 2012 13:05:38 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">double size=(sizeof(double*)*dim); //zum Testen
</code></pre>
<p>Wenn es gerade nicht zum Testen ist, sollte eine Größenangabe einen ganzzahligen Typ haben, vorzugsweise std::size_t. Allerdings brauchen wir das hier sowieso nicht.</p>
<pre><code class="language-cpp">matrix = static_cast&lt;double&gt;(new double(sizeof(double*)*dim));
</code></pre>
<p>Was soll denn der Cast da? Und warum nach double? Breiten wir mal den Mantel des Schweigens darüber...</p>
<p>matrix ist ein Zeiger auf double-Zeiger, also allozieren wir mit new ein Array von double-Zeigern:</p>
<pre><code class="language-cpp">matrix = new double*[dim];
</code></pre>
<p>Achso, der Form halber weise ich dich darauf hin, dass das mit std::vector viel besser geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2220988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220988</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 08 Jun 2012 13:05:38 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu new &amp;amp; delete on Fri, 08 Jun 2012 13:19:57 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Lösung. Klappt jetzt ist mir zwar noch nicht komplett klar warum aber ich komme langsam dahinter.</p>
<p>Wie gesagt jeder fängt mal klein an <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2220994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2220994</guid><dc:creator><![CDATA[Outerheaven]]></dc:creator><pubDate>Fri, 08 Jun 2012 13:19:57 GMT</pubDate></item></channel></rss>