<?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[Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger?]]></title><description><![CDATA[<p>Ich habe gelesen, dass man auf die rohen Zeigen verzichten soll wo es nur geht. Da durch eine Exception auch mal gerne ein <code>delete</code> unbeabsichtigt ausgelassen werden kann. Wenn ich hier Mist erzähle, bitte korrigieren.</p>
<p>Auf der Suche nach einer Alternative bin ich nun auf den <code>unique_ptr</code> als Alternative gestoßen. Was haltet ihr von dieser Alternative zu rohen Zeigern?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/309064/was-haltet-ihr-von-unique_ptr-als-ersatz-für-rohe-zeiger</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 12:09:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/309064.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 13 Oct 2012 09:54:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger? on Sat, 13 Oct 2012 09:54:18 GMT]]></title><description><![CDATA[<p>Ich habe gelesen, dass man auf die rohen Zeigen verzichten soll wo es nur geht. Da durch eine Exception auch mal gerne ein <code>delete</code> unbeabsichtigt ausgelassen werden kann. Wenn ich hier Mist erzähle, bitte korrigieren.</p>
<p>Auf der Suche nach einer Alternative bin ich nun auf den <code>unique_ptr</code> als Alternative gestoßen. Was haltet ihr von dieser Alternative zu rohen Zeigern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2259912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2259912</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 13 Oct 2012 09:54:18 GMT</pubDate></item><item><title><![CDATA[Reply to Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger? on Sat, 13 Oct 2012 10:12:29 GMT]]></title><description><![CDATA[<p>Kommt drauf an wofür.</p>
<p>Für besitzende Zeiger: Ja, auf jeden Fall irgendeinen geeigneten Smartpointer benutzen. Wenn man vorher einen rohen Zeiger benutzen wollte, ist unique_ptr ein wahrscheinlicher Kandidat für den richtigen Smartpointertyp.</p>
<p>Für unbesitzende Zeiger: Unsinn.</p>
<p>P.S.: Die Begründung mit den Exceptions finde ich ein bisschen zu kurz. Ich würde sagen: Weil es <em>möglich</em> ist, mit rohen besitzenden Zeigern fehlerhafte Freigaben zu erzeugen. Das sind ja nicht nur Exceptions, sondern auch (andere) Fehler/Unachtsamkeiten durch den Programmierer, die hier zum Fehler führen können. Bei den Smartpointern ist es gar <em>nicht möglich</em>, etwas falsch zu machen. Das auch noch ganz ohne jede Laufzeitkosten und auch praktisch ohne Kosten zur Compilezeit gegenüber einer gleichwertigen Variante mit rohen Zeigern. Also gibt es keinen Grund, jemals einen besitzenden Zeiger nicht smart zu machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2259914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2259914</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 13 Oct 2012 10:12:29 GMT</pubDate></item><item><title><![CDATA[Reply to Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger? on Sat, 13 Oct 2012 10:00:43 GMT]]></title><description><![CDATA[<p>Grasshopper schrieb:</p>
<blockquote>
<p>Ich habe gelesen, dass man auf die rohen Zeigen verzichten soll wo es nur geht.</p>
</blockquote>
<p>Das hast du falsch verstanden.</p>
<p>Grasshopper schrieb:</p>
<blockquote>
<p>Da durch eine Exception auch mal gerne ein <code>delete</code> unbeabsichtigt ausgelassen werden kann.</p>
</blockquote>
<p><strong>Besitzende</strong> Zeiger sind etwas anderes. (Nicht syntaktisch, aber semantisch.)</p>
<p>Grasshopper schrieb:</p>
<blockquote>
<p>Wenn ich hier Mist erzähle, bitte korrigieren.</p>
</blockquote>
<p>Mission complete.</p>
<p>Grasshopper schrieb:</p>
<blockquote>
<p>Auf der Suche nach einer Alternative bin ich nun auf den <code>unique_ptr</code> als Alternative gestoßen. Was haltet ihr von dieser Alternative zu rohen Zeigern?</p>
</blockquote>
<p>unique_ptr modelliert einen Zeiger, der alleiniger Besitzer (daher unique) des Objekts/der Objekte ist, auf die er zeigt. Wenn das die Situation ist die vorliegt, dann nutze unique_ptr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2259915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2259915</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Sat, 13 Oct 2012 10:00:43 GMT</pubDate></item><item><title><![CDATA[Reply to Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger? on Sat, 13 Oct 2012 13:28:53 GMT]]></title><description><![CDATA[<p>Puh kompliziert fest zu machen was ich eigentlich meine^^ Also, mir geht es um rohe Zeiger(A* myA = new A()) die ich dann per new mit der Adresse meine Objektes füttere. Das habe ich wirklich falsch verstanden, dass man diese rohen Zeiger vermeiden sollte wo es nur geht?</p>
<p>EDIT: Ich glaube, laut eurer Definition, besitzende Zeiger. Auch wenn mir der Unterschied nicht ganz klar ist. Denn ein roher Zeiger speichert immer nur eine Adresse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2259960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2259960</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 13 Oct 2012 13:28:53 GMT</pubDate></item><item><title><![CDATA[Reply to Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger? on Sat, 13 Oct 2012 13:42:56 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int a;
int* zeigend = &amp;a;

int* zeigendUndBesitzend = new int;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2259971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2259971</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Sat, 13 Oct 2012 13:42:56 GMT</pubDate></item><item><title><![CDATA[Reply to Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger? on Sat, 13 Oct 2012 13:43:52 GMT]]></title><description><![CDATA[<p>Grasshopper schrieb:</p>
<blockquote>
<p>Das habe ich wirklich falsch verstanden, dass man diese rohen Zeiger vermeiden sollte wo es nur geht?</p>
</blockquote>
<p>Nein <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>Also nochmals:</p>
<pre><code class="language-cpp">// Besitzende Zeiger, die manuelle Speicherverwaltung erfordern
MyClass* p = new MyClass();
delete p;

// Bessere Alternative: Unique Pointer
std::unique_ptr&lt;MyClass&gt; q(new MyClass());

// Nicht-besitzende, passive Zeiger, die als reine Verweise dienen
// Völlig okay, kannst du auch weiterhin benutzen
MyClass x;
MyClass* r = &amp;x;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2259972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2259972</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 13 Oct 2012 13:43:52 GMT</pubDate></item><item><title><![CDATA[Reply to Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger? on Sat, 13 Oct 2012 14:00:16 GMT]]></title><description><![CDATA[<p>Ah ok, deswegen syntaktisch kein Unterschied aber von der Art wie mit umzugehen ist.</p>
<p>EDIT: Also werde ich jetzt anstellen rohe besitzende Zeiger std::unique_ptr einsetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2259974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2259974</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 13 Oct 2012 14:00:16 GMT</pubDate></item><item><title><![CDATA[Reply to Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger? on Sat, 13 Oct 2012 17:13:55 GMT]]></title><description><![CDATA[<p>Grasshopper schrieb:</p>
<blockquote>
<p>EDIT: Also werde ich jetzt anstellen rohe besitzende Zeiger std::unique_ptr einsetzen.</p>
</blockquote>
<p>Schon mal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> , aber noch verbesserungsfähig.</p>
<p>Es gibt verschiedene Zeiger für verschiedene Bedürfnisse. Sieh sie dir alle an.<br />
Dazu gibt es noch <strong><a href="http://www.boost.org/doc/libs/1_51_0/libs/ptr_container/doc/headers.html" rel="nofollow">Boosts Pointer Container</a></strong>, die sind auch klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2260060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2260060</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 13 Oct 2012 17:13:55 GMT</pubDate></item><item><title><![CDATA[Reply to Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger? on Sat, 13 Oct 2012 18:46:56 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Grasshopper schrieb:</p>
<blockquote>
<p>EDIT: Also werde ich jetzt anstellen rohe besitzende Zeiger std::unique_ptr einsetzen.</p>
</blockquote>
<p>Schon mal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> , aber noch verbesserungsfähig.</p>
<p>Es gibt verschiedene Zeiger für verschiedene Bedürfnisse. Sieh sie dir alle an.<br />
Dazu gibt es noch <strong><a href="http://www.boost.org/doc/libs/1_51_0/libs/ptr_container/doc/headers.html" rel="nofollow">Boosts Pointer Container</a></strong>, die sind auch klasse.</p>
</blockquote>
<p>Die können nicht mit <code>unique_ptr</code> umgehen.<br />
Standard-Container können das aber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2260093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2260093</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Sat, 13 Oct 2012 18:46:56 GMT</pubDate></item><item><title><![CDATA[Reply to Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger? on Sat, 13 Oct 2012 18:55:35 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Grasshopper schrieb:</p>
<blockquote>
<p>EDIT: Also werde ich jetzt anstellen rohe besitzende Zeiger std::unique_ptr einsetzen.</p>
</blockquote>
<p>Schon mal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> , aber noch verbesserungsfähig.</p>
<p>Es gibt verschiedene Zeiger für verschiedene Bedürfnisse. Sieh sie dir alle an.<br />
Dazu gibt es noch <strong><a href="http://www.boost.org/doc/libs/1_51_0/libs/ptr_container/doc/headers.html" rel="nofollow">Boosts Pointer Container</a></strong>, die sind auch klasse.</p>
</blockquote>
<p>Die können nicht mit <code>unique_ptr</code> umgehen.<br />
Standard-Container können das aber.</p>
</blockquote>
<p>Wovon redest du? Ich hab doch überhaupt nicht davon gesprochen, dass sie das sollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2260096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2260096</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 13 Oct 2012 18:55:35 GMT</pubDate></item><item><title><![CDATA[Reply to Was haltet ihr von unique_ptr als Ersatz für rohe Zeiger? on Sat, 13 Oct 2012 18:56:41 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Die können nicht mit <code>unique_ptr</code> umgehen.</p>
</blockquote>
<p>Sollen sie auch nicht. Die Zeiger werden bei Boost.PtrContainer weitgehend wegabstrahiert, sodass man normal darüber iterieren oder Algorithmen anwenden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2260099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2260099</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 13 Oct 2012 18:56:41 GMT</pubDate></item></channel></rss>