<?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[tiefenkopie STL vector mit char*]]></title><description><![CDATA[<p>Hallo hab einen Vector, der aus char* besteht. In diesem sollen zb. dateinamen gespeichert werden. Nun ist der string der auch als char* deklariert ist nach ablauf einer funktion nicht mehr vorhanden bzw. um speicherlecks vorzubeugen mit delete beseitigt. Wie kann ich nun eine tiefen kopie in den vector machen, damit die daten erhalten bleiben.</p>
<p>der vector in der h:</p>
<pre><code class="language-cpp">std::vector&lt;char*&gt; files;
</code></pre>
<p>im code dann selbst die übergabe:</p>
<pre><code>filename_length = (int)fileIO_4.ReadUInt8();
char* filename = new char[filename_length+1];
memsetfilename, '\0',filename_length+1);

char byte[1];
for(int h=0; h&lt;filename_length; h++)
{
	byte[0] = fileIO_4.ReadUInt8();
	memcpy(filename+h,byte,1);
}
	memcpy (filename+(filename_length),&quot;&quot;,1);

files.push_back(filename);
</code></pre>
<p>für den moment ist der name natürlich gepeichert im vector. aber danach wenn der pointer filename gelöscht wird, sind natürlich auch die daten weg.</p>
<p>Muss ich da irgendwo push_back oder sowas überladen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273243/tiefenkopie-stl-vector-mit-char</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 08:35:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273243.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Sep 2010 20:09:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to tiefenkopie STL vector mit char* on Thu, 02 Sep 2010 20:09:22 GMT]]></title><description><![CDATA[<p>Hallo hab einen Vector, der aus char* besteht. In diesem sollen zb. dateinamen gespeichert werden. Nun ist der string der auch als char* deklariert ist nach ablauf einer funktion nicht mehr vorhanden bzw. um speicherlecks vorzubeugen mit delete beseitigt. Wie kann ich nun eine tiefen kopie in den vector machen, damit die daten erhalten bleiben.</p>
<p>der vector in der h:</p>
<pre><code class="language-cpp">std::vector&lt;char*&gt; files;
</code></pre>
<p>im code dann selbst die übergabe:</p>
<pre><code>filename_length = (int)fileIO_4.ReadUInt8();
char* filename = new char[filename_length+1];
memsetfilename, '\0',filename_length+1);

char byte[1];
for(int h=0; h&lt;filename_length; h++)
{
	byte[0] = fileIO_4.ReadUInt8();
	memcpy(filename+h,byte,1);
}
	memcpy (filename+(filename_length),&quot;&quot;,1);

files.push_back(filename);
</code></pre>
<p>für den moment ist der name natürlich gepeichert im vector. aber danach wenn der pointer filename gelöscht wird, sind natürlich auch die daten weg.</p>
<p>Muss ich da irgendwo push_back oder sowas überladen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947556</guid><dc:creator><![CDATA[greenghecco]]></dc:creator><pubDate>Thu, 02 Sep 2010 20:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to tiefenkopie STL vector mit char* on Fri, 03 Sep 2010 05:26:28 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::vector&lt;std::string&gt; files;
</code></pre>
<pre><code class="language-cpp">filename_length = ...;
std::vector&lt;char&gt; filename (filename_length);
...
files.push_back(string());
files.back().assign(filename.begin(),filename.end());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1947560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947560</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 03 Sep 2010 05:26:28 GMT</pubDate></item><item><title><![CDATA[Reply to tiefenkopie STL vector mit char* on Thu, 02 Sep 2010 21:25:47 GMT]]></title><description><![CDATA[<p>danke, oder ich geb den speicher frei wenn ich den vector lösche</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947594</guid><dc:creator><![CDATA[greenghecco]]></dc:creator><pubDate>Thu, 02 Sep 2010 21:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to tiefenkopie STL vector mit char* on Thu, 02 Sep 2010 22:33:20 GMT]]></title><description><![CDATA[<p>du &quot;gibst&quot; gar keinen Speicher frei, das macht std::vector<a href="std::string" rel="nofollow">std::string</a> ganz alleine für dich wenn er nicht mehr im Scope ist <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="😉"
    /> warum eigentlich nicht std::string ? Das ist ja &quot;sozusagen&quot; ein vector&lt;char&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947625</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Thu, 02 Sep 2010 22:33:20 GMT</pubDate></item><item><title><![CDATA[Reply to tiefenkopie STL vector mit char* on Thu, 02 Sep 2010 23:03:31 GMT]]></title><description><![CDATA[<p>padreigh schrieb:</p>
<blockquote>
<p>warum eigentlich nicht std::string ? Das ist ja &quot;sozusagen&quot; ein vector&lt;char&gt;</p>
</blockquote>
<p>Er will aber einen <code>vector&lt;char*&gt;</code> , also einen Container aus Strings. Und das gekapselte Äquivalent dazu ist eben <code>vector&lt;string&gt;</code> und nicht <code>string</code> ...</p>
<p>@ greenghecco:<br />
Von <code>memcpy()</code> , <code>strcpy()</code> und solchen Low-Level-Operationen kannst du mit <code>vector&lt;string&gt;</code> eigentlich komplett die Finger lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947630</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 02 Sep 2010 23:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to tiefenkopie STL vector mit char* on Fri, 03 Sep 2010 06:26:20 GMT]]></title><description><![CDATA[<p>greenghecco schrieb:</p>
<blockquote>
<p>Hallo hab einen Vector, der aus char* besteht.</p>
</blockquote>
<p>Jede Containerklasse der STL folgt der Wertsemantik und nicht der Pointersemantik. Verwende entweder std::vector<a href="std::string" rel="nofollow">std::string</a> &gt; oder nimm einen SmartPointer z.B. aus Boost.</p>
<p>Und gewöhn Dir einen besseren C++ Programmierstil an, das was Du da gepostet hast ist fast reines C.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1947660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1947660</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Fri, 03 Sep 2010 06:26:20 GMT</pubDate></item></channel></rss>