<?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[Pointer erstellen danach object zuweisen]]></title><description><![CDATA[<p>Hi!<br />
Ich habe folgenden code:</p>
<pre><code>vector&lt;char&gt; *shm=attach();
vector&lt;char&gt; vect;
*shm=vect;
for(int i=0;i&lt;3;i++){
	vect.push_back('b');
}
cout&lt;&lt;(*shm).size()&lt;&lt;endl; //ergibt 0
cout&lt;&lt;vect.size()&lt;&lt;endl; //ergibt 3
</code></pre>
<p>Was mach ich bei meinem Pointer falsch?<br />
thx for help</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278876/pointer-erstellen-danach-object-zuweisen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 23:22:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278876.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Dec 2010 16:37:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer erstellen danach object zuweisen on Tue, 14 Dec 2010 16:37:36 GMT]]></title><description><![CDATA[<p>Hi!<br />
Ich habe folgenden code:</p>
<pre><code>vector&lt;char&gt; *shm=attach();
vector&lt;char&gt; vect;
*shm=vect;
for(int i=0;i&lt;3;i++){
	vect.push_back('b');
}
cout&lt;&lt;(*shm).size()&lt;&lt;endl; //ergibt 0
cout&lt;&lt;vect.size()&lt;&lt;endl; //ergibt 3
</code></pre>
<p>Was mach ich bei meinem Pointer falsch?<br />
thx for help</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994522</guid><dc:creator><![CDATA[Anderro]]></dc:creator><pubDate>Tue, 14 Dec 2010 16:37:36 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer erstellen danach object zuweisen on Tue, 14 Dec 2010 16:41:16 GMT]]></title><description><![CDATA[<p>`*shm=vect;</p>
<p>`<br />
Du weist nicht dem Pointer einen neuen Wert zu sondern kopierst vect dahin wo dein Pointer hinzeigt. Nachfolgende Änderungen am Original von vect verändern natürlich die Kopie nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994528</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 14 Dec 2010 16:41:16 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer erstellen danach object zuweisen on Tue, 14 Dec 2010 16:45:08 GMT]]></title><description><![CDATA[<p>danke <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="🙂"
    /><br />
ist es denn eine deepcopy, oder nur eine normale?<br />
EDIT: Wie weise ich ihn denn zu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994531</guid><dc:creator><![CDATA[Anderro]]></dc:creator><pubDate>Tue, 14 Dec 2010 16:45:08 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer erstellen danach object zuweisen on Tue, 14 Dec 2010 16:46:11 GMT]]></title><description><![CDATA[<p>Anderro schrieb:</p>
<blockquote>
<p>Hi!<br />
Ich habe folgenden code:</p>
<pre><code>vector&lt;char&gt; *shm=attach();
vector&lt;char&gt; vect;
*shm=vect;
for(int i=0;i&lt;3;i++){
	vect.push_back('b');
}
cout&lt;&lt;(*shm).size()&lt;&lt;endl; //ergibt 0
cout&lt;&lt;vect.size()&lt;&lt;endl; //ergibt 3
</code></pre>
<p>Was mach ich bei meinem Pointer falsch?<br />
thx for help</p>
</blockquote>
<p>Ich vermute mal du wunderst dich, warum nicht beide die gleiche Größe haben.</p>
<pre><code class="language-cpp">*shm=vect;
</code></pre>
<p>An dieser Stelle erstellst du eine Kopie des Vektors.<br />
Du weist einen Vektor einem anderen Vektor zu, wodurch der Inhalt des einen<br />
in den anderen kopiert wird.</p>
<p>Nebenbei:</p>
<pre><code class="language-cpp">cout&lt;&lt;(*shm).size()&lt;&lt;endl;
</code></pre>
<p>schreibt man in der Regel als</p>
<pre><code class="language-cpp">cout&lt;&lt;shm-&gt;size()&lt;&lt;endl;
</code></pre>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994536</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Tue, 14 Dec 2010 16:46:11 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer erstellen danach object zuweisen on Tue, 14 Dec 2010 16:47:07 GMT]]></title><description><![CDATA[<p>Eigentlich ist das Gegenteil einer deep copy eine shallow copy(Oberflächliche Kopie). Du kannst davon ausgehen das alle Klassen der Standardbibliothek deep copy machen, so auch vector.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994539</guid><dc:creator><![CDATA[Oberon_0]]></dc:creator><pubDate>Tue, 14 Dec 2010 16:47:07 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer erstellen danach object zuweisen on Tue, 14 Dec 2010 16:54:33 GMT]]></title><description><![CDATA[<p>Wenn ich jetzt</p>
<pre><code>(*shm).push_back('a');
</code></pre>
<p>mache kriege ich ein Segmentation fault. Liegt das an dem Pointer den attach() mir zurückgibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994547</guid><dc:creator><![CDATA[Anderro]]></dc:creator><pubDate>Tue, 14 Dec 2010 16:54:33 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer erstellen danach object zuweisen on Tue, 14 Dec 2010 16:55:39 GMT]]></title><description><![CDATA[<p>Oberon_0 schrieb:</p>
<blockquote>
<p>Eigentlich ist das Gegenteil einer deep copy eine shallow copy(Oberflächliche Kopie). Du kannst davon ausgehen das alle Klassen der Standardbibliothek deep copy machen, so auch vector.</p>
</blockquote>
<p>Seit wann das denn?<br />
std::vector kopiert doch nur die Objekte, die direkt in diesem liegen.<br />
Alles andere kommt höchstens durch die spezifischen Copy-Konstruktoren.</p>
<p>Wenn ich nen std::vector&lt;Foo*&gt; kopiere, würde ich es nicht als deep copy<br />
bezeichenen, denn es werden ja nur die Zeiger kopiert <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/1994548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994548</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Tue, 14 Dec 2010 16:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer erstellen danach object zuweisen on Tue, 14 Dec 2010 16:56:50 GMT]]></title><description><![CDATA[<p>Anderro schrieb:</p>
<blockquote>
<p>EDIT: Wie weise ich ihn denn zu?</p>
</blockquote>
<p>So:</p>
<pre><code class="language-cpp">vector&lt;char&gt; *shm;
vector&lt;char&gt; vect;
shm=&amp;vect;  // Pointer nicht dereferenzieren, stattdessen Adressoperator benutzen
for(int i=0;i&lt;3;i++){
    vect.push_back('b');
}
cout&lt;&lt;(*shm).size()&lt;&lt;endl; //ergibt 0
cout&lt;&lt;vect.size()&lt;&lt;endl; //ergibt 3
</code></pre>
<p>Und schon sind wir in den Tiefen des Pointerdschungels wo sich niemand freiwillig hinwagen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994550</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 14 Dec 2010 16:56:50 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer erstellen danach object zuweisen on Tue, 14 Dec 2010 16:58:14 GMT]]></title><description><![CDATA[<p>Anderro schrieb:</p>
<blockquote>
<p>Wenn ich jetzt</p>
<pre><code>(*shm).push_back('a');
</code></pre>
<p>mache kriege ich ein Segmentation fault. Liegt das an dem Pointer den attach() mir zurückgibt?</p>
</blockquote>
<p>Ja, das wird daran liegen, dass an der Stelle wo shm hinweist nicht genug Platz für deine Vectorkopie war. Was ist denn attach()?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994551</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 14 Dec 2010 16:58:14 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer erstellen danach object zuweisen on Tue, 14 Dec 2010 17:16:00 GMT]]></title><description><![CDATA[<p>attach() erzeug ein shared memory</p>
<pre><code>vector&lt;char&gt; *attach()
{
	char c;
	int shmid;
	key_t key;
	vector&lt;char&gt; *shm;

	/*
	* We'll name our shared memory segment
	* &quot;5678&quot;.
	*/
	key = 5678;

	/*
	* Create the segment.
	*/
	if ((shmid = shmget(key, SHMSZ, IPC_CREAT | 0666)) &lt; 0) {
		cerr&lt;&lt;&quot;shmget&quot;;
		exit(1);
	}

	/*
	* Now we attach the segment to our data space.
	*/
	if ((shm = (vector&lt;char&gt; *)shmat(shmid, 0, 0)) == (vector&lt;char&gt; *) -1) {
		cerr&lt;&lt;&quot;shmat&quot;;
		exit(1);
	}

	return shm;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1994555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994555</guid><dc:creator><![CDATA[Anderro]]></dc:creator><pubDate>Tue, 14 Dec 2010 17:16:00 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer erstellen danach object zuweisen on Tue, 14 Dec 2010 17:18:20 GMT]]></title><description><![CDATA[<p>Guck Dir mal boost::interprocess an, da gibt Shared Memory, auch für Container, was normalerweise problematisch ist.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994556</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 14 Dec 2010 17:18:20 GMT</pubDate></item></channel></rss>