<?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[Anzahl der Elemente mittels sizeof() ermitteln;]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe einen 2-dimensionalen dynamischen Pointer-Array, der auf Strings zeigt und dessen Anzahl der Elemente ich erst zur Laufzeit in einem Klassenkonstruktor zuweise.</p>
<p>Später hole ich mir die Anzahl der Elemente, also die Größe des Pointerarrays mit sizeof(ptrArray) und leider gibt mir der compiler einen falschen Wert zurück.<br />
Egal welche Größe ich im Konstruktor vorgebe, bei der Rückgabe kommt immer die 4 als Anzahl zurück.</p>
<p>hier mal mein konstruktor:</p>
<pre><code class="language-cpp">tbClass::tbClass(int X, int Y)
{
	tb=new string *[X];
	for (int i = 0; i &lt; X ; i++) 
             tb[i] = new string[Y];

         cout&lt;&lt;sizeof(tb);  //Ergebnis: 4 ???
}
</code></pre>
<p>und die Definition von tb:</p>
<pre><code class="language-cpp">class tbClass
{ 
   std::string** tb;
//   (...)
public: 
   tbClass(int X, int Y);
}
</code></pre>
<p>wenn ich jetzt eine Instanz von dieser Klasse anlege, mit X=10 und Y=10 dann bekomme ich von sizeof(tb) leider immer 4<br />
habe ich da vielleicht was übersehen?</p>
<p>Bitte um Hilfe; bedanke mich im Voraus für euer Bemühen.</p>
<p>liebe Grüße, Su Chen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/154808/anzahl-der-elemente-mittels-sizeof-ermitteln</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 01:32:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/154808.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 31 Jul 2006 06:42:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 06:42:36 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe einen 2-dimensionalen dynamischen Pointer-Array, der auf Strings zeigt und dessen Anzahl der Elemente ich erst zur Laufzeit in einem Klassenkonstruktor zuweise.</p>
<p>Später hole ich mir die Anzahl der Elemente, also die Größe des Pointerarrays mit sizeof(ptrArray) und leider gibt mir der compiler einen falschen Wert zurück.<br />
Egal welche Größe ich im Konstruktor vorgebe, bei der Rückgabe kommt immer die 4 als Anzahl zurück.</p>
<p>hier mal mein konstruktor:</p>
<pre><code class="language-cpp">tbClass::tbClass(int X, int Y)
{
	tb=new string *[X];
	for (int i = 0; i &lt; X ; i++) 
             tb[i] = new string[Y];

         cout&lt;&lt;sizeof(tb);  //Ergebnis: 4 ???
}
</code></pre>
<p>und die Definition von tb:</p>
<pre><code class="language-cpp">class tbClass
{ 
   std::string** tb;
//   (...)
public: 
   tbClass(int X, int Y);
}
</code></pre>
<p>wenn ich jetzt eine Instanz von dieser Klasse anlege, mit X=10 und Y=10 dann bekomme ich von sizeof(tb) leider immer 4<br />
habe ich da vielleicht was übersehen?</p>
<p>Bitte um Hilfe; bedanke mich im Voraus für euer Bemühen.</p>
<p>liebe Grüße, Su Chen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107453</guid><dc:creator><![CDATA[Su Chen]]></dc:creator><pubDate>Mon, 31 Jul 2006 06:42:36 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 06:58:10 GMT]]></title><description><![CDATA[<p><em>tb</em> ist ein Zeiger, ein Zeiger ist auf einem 32-Bit System (idR.) 4 Bytes (32-Bit) breit. Somit liefert <em>sizeof( tb )</em> - völlig zurecht - 4.<br />
Warum merkst du dir <em>X</em> und <em>Y</em> nicht einfach?</p>
<p>Greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107461</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Mon, 31 Jul 2006 06:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 07:05:27 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> hmm... ich hab das Folgende gefunden:</p>
<blockquote>
<p>Mit dem sizeof-Operator angewandt auf einen Zeiger, der auf ein dynamisch erstelltes Array zeigt, kann man nicht die Anzahl der Komponenten des Arrays feststellen!<br />
aus: <a href="http://www.math.uni-bayreuth.de/~rbaier/lectures/c++_ss2001/html/node156.html" rel="nofollow">Speicherplatz reservieren und verändern in C++</a></p>
</blockquote>
<p>gibts da vielleicht eine andere möglichkeit die Anzahl der Elemente zu bekommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107466</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107466</guid><dc:creator><![CDATA[Su Chen]]></dc:creator><pubDate>Mon, 31 Jul 2006 07:05:27 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 07:06:29 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>Warum merkst du dir <em>X</em> und <em>Y</em> nicht einfach?</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1107469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107469</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 31 Jul 2006 07:06:29 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 07:07:04 GMT]]></title><description><![CDATA[<p>oh .. hehe.. war etwas langsam beim Schreiben...</p>
<p>ok.. aber ich würde trotzdem gerne wissen, ob es keine andere funktion gibt die die funktion von sizeof übernimmt ^^</p>
<p>aber danke für den tipp <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1107470</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107470</guid><dc:creator><![CDATA[Su Chen]]></dc:creator><pubDate>Mon, 31 Jul 2006 07:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 07:21:01 GMT]]></title><description><![CDATA[<p>Lösungsmöglichkeit für <em>echte</em> Masochisten:</p>
<p>Du könntest für dich festlegen, dass im c-tor jeder Pointer deines Arrays einen Wert ungleich 0 (null) bekommt - bis auf den letzten. Dann kannst du bei Bedarf immer wieder lustig Zählen, darfst jedoch den letzten Pointer logischerweise nicht verwenden.</p>
<p>Greetz, Swordfish</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107476</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Mon, 31 Jul 2006 07:21:01 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 07:32:29 GMT]]></title><description><![CDATA[<p>Es gibt so etwas nicht. Du kannst es, wenn du die Implementierung von new[] kennst selber bauen (s.u.), aber da das bei jedem Compilerhersteller unterschiedlich sein kann, wärst du dann an einen Compiler gebunden, ist also keine gute Idee.</p>
<p>Ein Beispiel:<br />
Der Compiler könnte die Länge des Arrays in einem size_t-Bereich <em>vor</em> den eigentlichen Daten speichern (er brauch sie ja schließlich selber für den delete[]-Aufruf):</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
size_t heap_sizeof_array (T* p)
{
    return *(--reinterpret_cast&lt;size_t*&gt; (p));
}
</code></pre>
<p>Aber wie gesagt, benutz das nicht, es ist nur ein Beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107492</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 31 Jul 2006 07:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 07:55:26 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>Der Compiler könnte die Länge des Arrays in einem size_t-Bereich <em>vor</em> den eigentlichen Daten speichern (er brauch sie ja schließlich selber für den delete[]-Aufruf)</p>
</blockquote>
<p>Nö braucht er nicht, und schon gar nicht der Compiler. Wenn dann erledigt das die Bibliothek. Und diese Implementation wiederum ist vom Betriebssystem abhängig da so etwas vom Speichermanagement des Betriebssystems erledigt wird. Von daher ist das an und für sich Quark.</p>
<p>BR<br />
Vinzenz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107504</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Mon, 31 Jul 2006 07:55:26 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 08:17:08 GMT]]></title><description><![CDATA[<p>evilissimo schrieb:</p>
<blockquote>
<p>und schon gar nicht der Compiler. Wenn dann erledigt das die Bibliothek.</p>
</blockquote>
<p>Hast Recht, eine kleine Unachtsamkeit in der Wortwahl <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>evilissimo schrieb:</p>
<blockquote>
<p>Und diese Implementation wiederum ist vom Betriebssystem abhängig da so etwas vom Speichermanagement des Betriebssystems erledigt wird.</p>
</blockquote>
<p>Hmm, wenn das alles das Betriebsystem übernimmt, wieso brauch man dann zwei delete Varianten?! Das OS weiß doch gar nichts davon, ob das nun ein Array oder ein riesiges Objekt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107518</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 31 Jul 2006 08:17:08 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 08:21:40 GMT]]></title><description><![CDATA[<p>Wegen der Destruktoren (die müssen ja aufgerufen werden). Stimmt und genau deshalb muss die Bibliothek bei einem Array wissen wieviel Elemente es hat.</p>
<p>Tja nobody is perfekt <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="😉"
    /> Alles weiß ich nun auch nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>BR<br />
Vinzenz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107521</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Mon, 31 Jul 2006 08:21:40 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 08:44:31 GMT]]></title><description><![CDATA[<p>whou.. danke für die zahlreichen tipps</p>
<p>bin aber kein masochist :p</p>
<p>lg Su Chen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107553</guid><dc:creator><![CDATA[Su Chen]]></dc:creator><pubDate>Mon, 31 Jul 2006 08:44:31 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 10:19:52 GMT]]></title><description><![CDATA[<p>Versuch's mal mit einem std::vector&lt;std::vector<a href="std::string" rel="nofollow">std::string</a> &gt;. Damit kannst du die Göße per size() herraus finden.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107612</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Mon, 31 Jul 2006 10:19:52 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl der Elemente mittels sizeof() ermitteln; on Mon, 31 Jul 2006 10:23:03 GMT]]></title><description><![CDATA[<p>hmm.. das ist eine gute Idee!</p>
<p>habs auch schon damit gemacht <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>danke sehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> <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="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1107616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1107616</guid><dc:creator><![CDATA[Su Chen]]></dc:creator><pubDate>Mon, 31 Jul 2006 10:23:03 GMT</pubDate></item></channel></rss>