<?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[In welchem Fall testet man, ob ein NULL-Zeiger vorliegt?]]></title><description><![CDATA[<p>Das habe ich mich schon den ganzen Tag gefragt. Möchte mir da evtl. eine/r helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/246409/in-welchem-fall-testet-man-ob-ein-null-zeiger-vorliegt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 02:37:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/246409.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 27 Jul 2009 22:54:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to In welchem Fall testet man, ob ein NULL-Zeiger vorliegt? on Mon, 27 Jul 2009 22:54:13 GMT]]></title><description><![CDATA[<p>Das habe ich mich schon den ganzen Tag gefragt. Möchte mir da evtl. eine/r helfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750607</guid><dc:creator><![CDATA[skullyan]]></dc:creator><pubDate>Mon, 27 Jul 2009 22:54:13 GMT</pubDate></item><item><title><![CDATA[Reply to In welchem Fall testet man, ob ein NULL-Zeiger vorliegt? on Mon, 27 Jul 2009 22:58:19 GMT]]></title><description><![CDATA[<p>skullyan schrieb:</p>
<blockquote>
<p>Das habe ich mich schon den ganzen Tag gefragt. Möchte mir da evtl. eine/r helfen?</p>
</blockquote>
<p>Hau soviele asserts rein, wie Du magst. Mehr ist mehr.<br />
Und teste nach Funktionsaufrufen, die einen Nullzeiger liefern könnten, falls Du sowas mal hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750609</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 27 Jul 2009 22:58:19 GMT</pubDate></item><item><title><![CDATA[Reply to In welchem Fall testet man, ob ein NULL-Zeiger vorliegt? on Mon, 27 Jul 2009 22:59:41 GMT]]></title><description><![CDATA[<p>Was passiert eigentlich, wenn delete[] auf einen Null Zeiger angewendet wird, der auf ein leeres array zeigt ( T *p = new T [0] )? Undefiniert oder korrekt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750610</guid><dc:creator><![CDATA[Enoin]]></dc:creator><pubDate>Mon, 27 Jul 2009 22:59:41 GMT</pubDate></item><item><title><![CDATA[Reply to In welchem Fall testet man, ob ein NULL-Zeiger vorliegt? on Mon, 27 Jul 2009 23:06:26 GMT]]></title><description><![CDATA[<p>delete 0;//null probleme<br />
delete hat ein if eingebaut, und ignoriert einfach die 0.</p>
<p>zur anderen frage:<br />
<a href="http://learningcppisfun.blogspot.com/2008/02/zero-sized-arrays.html" rel="nofollow">http://learningcppisfun.blogspot.com/2008/02/zero-sized-arrays.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750611</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 27 Jul 2009 23:06:26 GMT</pubDate></item><item><title><![CDATA[Reply to In welchem Fall testet man, ob ein NULL-Zeiger vorliegt? on Tue, 28 Jul 2009 08:50:56 GMT]]></title><description><![CDATA[<p>Zum Thema NULL-Zeiger:<br />
Stell dir eine Klasse vor, die nur unter gewissen Umständen Gebrauch von einem sehr großen internen Objekt macht. Dieses Objekt fest als Klassenmember einzubauen wäre in den meisten Fällen reine Verschwendung, daher allokiert man es erst bei Bedarf:</p>
<pre><code class="language-cpp">class Monster;

class UserOfMonster
{
  Monster* theMonster;
  Monster&amp; getTheMonster()
  {
    if (theMonster == NULL) 
      theMonster = new Monster(/*...*/);
    return *theMonster;
  }

  UserOfMonster() : theMonster(0) /*...*/ {}
  ~UserOfMonster() {delete theMonster;}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1750730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750730</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 28 Jul 2009 08:50:56 GMT</pubDate></item><item><title><![CDATA[Reply to In welchem Fall testet man, ob ein NULL-Zeiger vorliegt? on Tue, 28 Jul 2009 12:59:40 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Zum Thema NULL-Zeiger:<br />
...</p>
<pre><code class="language-cpp">UserOfMonster() : theMonster(0) /*...*/ {}
  ~UserOfMonster() {delete theMonster;}
};
</code></pre>
</blockquote>
<p>Trotzdem ist das für mich nicht verständlich.<br />
Ich erwarte</p>
<pre><code class="language-cpp">UserOfMonster() : theMonster(0) /*...*/ {}
  ~UserOfMonster() {if(theMonster) delete theMonster;}
};
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">UserOfMonster() : theMonster(new Monster) /*...*/ {}
  ~UserOfMonster() {delete theMonster;}
};
</code></pre>
<p>Die Zusatzvereinbarung, daß dieses if innerhalb von delete steckt, verletzt jedes Gefühl für anständiges Programmieren, es ist eine schwere Symmetrieverletzung, stört die Fehlersuche, verschwendet Rechenzeit und ist so ganz und gar nicht C++, daß es mich immr traurig macht, wenn ich das sehen muß.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750885</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 28 Jul 2009 12:59:40 GMT</pubDate></item><item><title><![CDATA[Reply to In welchem Fall testet man, ob ein NULL-Zeiger vorliegt? on Tue, 28 Jul 2009 13:14:33 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Die Zusatzvereinbarung, daß dieses if innerhalb von delete steckt, verletzt jedes Gefühl für anständiges Programmieren, es ist eine schwere Symmetrieverletzung, stört die Fehlersuche, verschwendet Rechenzeit und ist so ganz und gar nicht C++, daß es mich immr traurig macht, wenn ich das sehen muß.</p>
</blockquote>
<p>Verschwendet Rechenzeit? Wo? Die Rechenzeit, die ich verschwende, wenn ich das if explizit (nochmal) einbaue? Oder die Rechenzeit die verbraten wird um Speicher zu allokieren, nur damit der Pointer nicht 0 ist?<br />
Oder falls du dich auf das Sprachdesign an der Stelle beziehst: Wenns nicht eingebaut wäre, müsste man es so gut wie immer aufrufen. Die Symmetrie ist dadurch gegeben, dass eben nicht explizit abgefragt werden muss genauso wie bei new nicht abgefragt werden muss ob evtl. ein Nullpointer zurückkam.<br />
Wo es die Fehlersuche stört seh ich auch nicht.</p>
<p>Davon mal abgesehen ist</p>
<pre><code class="language-cpp">UserOfMonster() : theMonster(new Monster) /*...*/ {}
</code></pre>
<p>nicht exceptionsicher. Lass in /<em>...</em>/ einen Memberkonstruktor seine Excepton werfen und voilá, Speicherleck. Sowas ist es was <em>mich</em> jedesmal traurig macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1750899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1750899</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 28 Jul 2009 13:14:33 GMT</pubDate></item><item><title><![CDATA[Reply to In welchem Fall testet man, ob ein NULL-Zeiger vorliegt? on Tue, 28 Jul 2009 15:36:33 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Die Zusatzvereinbarung, daß dieses if innerhalb von delete steckt, verletzt jedes Gefühl für anständiges Programmieren, es ist eine schwere Symmetrieverletzung, stört die Fehlersuche, verschwendet Rechenzeit und ist so ganz und gar nicht C++, daß es mich immr traurig macht, wenn ich das sehen muß.</p>
</blockquote>
<p>Ich würde es einfach nur als &quot;sinnvoll&quot; bezeichnen.</p>
<p>Symmetrieverletzung... scheint hier jetzt in Mode zu kommen auf alles &quot;Symmetrie&quot; als Argument draufzuhauen. Ist aber kein Argument, ist ein Prinzip. Und dass diesem Prinzip zu gehorchen <em>überall</em> Sinn macht, das stelle ich ganz entschieden in Abrede. Und mehr: ich bestreite sogar, dass es die &quot;Symmetrie&quot; verletzt.</p>
<p>Kannst du begründen warum du a) denkst dass es die Symmetrie verletzt, und b) warum das in diesem speziellen Fall &quot;schlecht&quot; sein sollte?</p>
<p>Stört die Fehlersuche: Ansichtssache. Wenn man es als Fehler ansieht, delete 0 zu machen, und solche &quot;Fehler&quot; finden will, dann ja. Allerdings kannst du immer noch &quot;assert(p); delete p;&quot; schreiben, wenn du das andere Verhalten haben willst. Sehe gerade den Vorteil nicht, den man durch ein &quot;delete 0 = Fehler&quot; hätte.</p>
<p>Verschwendet Rechenzeit... OK. Ja. Und? delete ist langsam. Auch die schnellste Implementierung ist langsam. Mich ganz persönlich stört da ein mickriges if nicht. Macht keinen nennenswerten Unterschied in diesem Fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1751026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751026</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 28 Jul 2009 15:36:33 GMT</pubDate></item><item><title><![CDATA[Reply to In welchem Fall testet man, ob ein NULL-Zeiger vorliegt? on Tue, 28 Jul 2009 15:40:17 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a>: deswegen macht man aus theMonster ja auch einfach einen scoped_ptr <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>
<p>----</p>
<p>Aber ne, das verletzt ja wieder die Symmetrie!<br />
Kann ja nicht sein dass man wo &quot;new&quot; schreibt und garkein &quot;delete&quot;!!!einself<br />
<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="😮"
    /> <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="😮"
    /> <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="😮"
    /></p>
<p><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/1751031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1751031</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 28 Jul 2009 15:40:17 GMT</pubDate></item></channel></rss>