<?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[Speichergröße eines Arrays ermitteln]]></title><description><![CDATA[<p>Hey C++ Community!<br />
Ich habe Probleme die Speichergröße eines Arrays im Heap bzw. bei der übergabe als Parameter einer Funktion zu ermitteln. Hat jemand ne Idee?</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

void test(int* arr) {
	cout &lt;&lt; &quot;  &quot; &lt;&lt; sizeof(*arr) &lt;&lt; endl;
}

void main() {
	int arr[5]= {1, 2, 3, 4, 5};
	int* ptr = new int[5];

	test(arr);

	cout &lt;&lt; endl
		 &lt;&lt; &quot;  &quot; &lt;&lt; sizeof(arr) &lt;&lt; endl
		 &lt;&lt; &quot;  &quot; &lt;&lt; sizeof(ptr) &lt;&lt; endl
		 &lt;&lt; endl;
}
</code></pre>
<p>Ich bkomme von der Funktion 4 byte zurück. Von der Abfrage des Pointers auch nur 4 byte. Aber vom orginal Array bekomme ich die gewünschten 20 byte zurück.</p>
<p>Ich würde mich über tipps bzw. Hilfe freuen!<br />
LG. Make</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317917/speichergröße-eines-arrays-ermitteln</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Jul 2026 22:33:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317917.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 24 Jun 2013 18:41:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speichergröße eines Arrays ermitteln on Mon, 24 Jun 2013 18:41:56 GMT]]></title><description><![CDATA[<p>Hey C++ Community!<br />
Ich habe Probleme die Speichergröße eines Arrays im Heap bzw. bei der übergabe als Parameter einer Funktion zu ermitteln. Hat jemand ne Idee?</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

void test(int* arr) {
	cout &lt;&lt; &quot;  &quot; &lt;&lt; sizeof(*arr) &lt;&lt; endl;
}

void main() {
	int arr[5]= {1, 2, 3, 4, 5};
	int* ptr = new int[5];

	test(arr);

	cout &lt;&lt; endl
		 &lt;&lt; &quot;  &quot; &lt;&lt; sizeof(arr) &lt;&lt; endl
		 &lt;&lt; &quot;  &quot; &lt;&lt; sizeof(ptr) &lt;&lt; endl
		 &lt;&lt; endl;
}
</code></pre>
<p>Ich bkomme von der Funktion 4 byte zurück. Von der Abfrage des Pointers auch nur 4 byte. Aber vom orginal Array bekomme ich die gewünschten 20 byte zurück.</p>
<p>Ich würde mich über tipps bzw. Hilfe freuen!<br />
LG. Make</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334040</guid><dc:creator><![CDATA[Make-Grafik]]></dc:creator><pubDate>Mon, 24 Jun 2013 18:41:56 GMT</pubDate></item><item><title><![CDATA[Reply to Speichergröße eines Arrays ermitteln on Mon, 24 Jun 2013 18:47:59 GMT]]></title><description><![CDATA[<p>sizeof(arr) funktioniert nur bei &quot;echten&quot; Arrays, ptr ist aber ein Pointer und liefert die Größe des Wertes zurück, auf den der Pointer zeigt.<br />
<div class="plugin-markdown"><input type="checkbox" id="checkbox76944" checked="true" /><label for="checkbox76944">und std::vector anstatt ptr = new T[x]. Da kann man nämlich die Größe via Memberfunktionen abfragen.</label></div><br />
Es ist aber besser, wenn man Daten via Iteratoren übergibt.<br />
Wenn dir diese Begriffe nichts sagen, google mal danach.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2334043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334043</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 24 Jun 2013 18:47:59 GMT</pubDate></item><item><title><![CDATA[Reply to Speichergröße eines Arrays ermitteln on Mon, 24 Jun 2013 20:04:47 GMT]]></title><description><![CDATA[<p>Alternativen:</p>
<pre><code>//Hier sind es wieder 20 Byte Größe, funktioniert aber nur für 4 Elemente große Arrays.
void test(int (&amp;arr)[4]){
    cout &lt;&lt; &quot;  &quot; &lt;&lt; sizeof(*arr) &lt;&lt; endl;
}
</code></pre>
<pre><code>//Hier geht es für beliebig große Arrays. Man kann auch direkt size aus dem Template statt sizeof benutzen.
//Nachteil: Er baut dir für jede Arraygröße eine neue Funktion.
//Ein schlauer Compiler wird das aber wahrscheinlich wegoptimieren.
template &lt;int size&gt;
void test(int (&amp;arr)[size]) {
    cout &lt;&lt; &quot;  &quot; &lt;&lt; sizeof(*arr) &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2334064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2334064</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Mon, 24 Jun 2013 20:04:47 GMT</pubDate></item></channel></rss>