<?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[Großes Wundern beim Ermitteln der struct-Größe]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte ein vorhandenes struct TBenutzer um einige Eigenschaften vergrößern. Zu diesem Zweck hatte ich bereits beim Anlegen des structs Reserven angelegt (cReserve[]), um bereits vorhandene Daten, z.B. in Dateien, weiterbenutzen zu können.</p>
<p>Jetzt muss ich aber feststellen, dass das „Verrechnen“ von benötigtem Speicher für die verschiedenen Variablentypen nicht wie erwartet funktioniert.</p>
<p>Altes struct:</p>
<pre><code class="language-cpp">#define BENUTZER_MAX 20;
struct TBenutzer
{
    int iID_Benutzer;
    char cVorname[BENUTZER_MAX + 1];
    char cNachname[BENUTZER_MAX + 1];
    char cBenutzername[BENUTZER_MAX + 1];
    char cPasswort[BENUTZER_MAX + 1];
    bool bAnmeldung_muss;
    bool bPasswort_muss;

    char cReserve[249];
};
</code></pre>
<p>Wenn ich per sizeof(Benutzer) die struct-Größe ermittle, erhalte ich den Wert 340.</p>
<p>Das neue struct soll um die Eigenschaften dtVon, dtBis und bGueltig erweitert werden. Das erfordert für zwei TDateTimes je 8 Byte und ein bool nochmal 1 Byte, macht 17. Um diese 17 Byte verringere ich mein cReserve[249] auf cReserve[232].</p>
<pre><code class="language-cpp">#define BENUTZER_MAX 20;
struct TBenutzer
{
    int iID_Benutzer;
    char cVorname[BENUTZER_MAX + 1];
    char cNachname[BENUTZER_MAX + 1];
    char cBenutzername[BENUTZER_MAX + 1];
    char cPasswort[BENUTZER_MAX + 1];
    bool bAnmeldung_muss;
    bool bPasswort_muss;

    TDateTime dtVon;
    TDateTime dtBis;
    bool bGueltig;

    char cReserve[232];
};
</code></pre>
<p>Wenn ich jetzt per sizeof(Benutzer) die struct-Größe ermittle, erhalte ich den Wert 352.<br />
Wie kann das sein bzw. was mache ich falsch?</p>
<p>Gruß<br />
Leo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/104099/großes-wundern-beim-ermitteln-der-struct-größe</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 19:44:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/104099.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Mar 2005 10:00:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Großes Wundern beim Ermitteln der struct-Größe on Wed, 16 Mar 2005 10:00:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte ein vorhandenes struct TBenutzer um einige Eigenschaften vergrößern. Zu diesem Zweck hatte ich bereits beim Anlegen des structs Reserven angelegt (cReserve[]), um bereits vorhandene Daten, z.B. in Dateien, weiterbenutzen zu können.</p>
<p>Jetzt muss ich aber feststellen, dass das „Verrechnen“ von benötigtem Speicher für die verschiedenen Variablentypen nicht wie erwartet funktioniert.</p>
<p>Altes struct:</p>
<pre><code class="language-cpp">#define BENUTZER_MAX 20;
struct TBenutzer
{
    int iID_Benutzer;
    char cVorname[BENUTZER_MAX + 1];
    char cNachname[BENUTZER_MAX + 1];
    char cBenutzername[BENUTZER_MAX + 1];
    char cPasswort[BENUTZER_MAX + 1];
    bool bAnmeldung_muss;
    bool bPasswort_muss;

    char cReserve[249];
};
</code></pre>
<p>Wenn ich per sizeof(Benutzer) die struct-Größe ermittle, erhalte ich den Wert 340.</p>
<p>Das neue struct soll um die Eigenschaften dtVon, dtBis und bGueltig erweitert werden. Das erfordert für zwei TDateTimes je 8 Byte und ein bool nochmal 1 Byte, macht 17. Um diese 17 Byte verringere ich mein cReserve[249] auf cReserve[232].</p>
<pre><code class="language-cpp">#define BENUTZER_MAX 20;
struct TBenutzer
{
    int iID_Benutzer;
    char cVorname[BENUTZER_MAX + 1];
    char cNachname[BENUTZER_MAX + 1];
    char cBenutzername[BENUTZER_MAX + 1];
    char cPasswort[BENUTZER_MAX + 1];
    bool bAnmeldung_muss;
    bool bPasswort_muss;

    TDateTime dtVon;
    TDateTime dtBis;
    bool bGueltig;

    char cReserve[232];
};
</code></pre>
<p>Wenn ich jetzt per sizeof(Benutzer) die struct-Größe ermittle, erhalte ich den Wert 352.<br />
Wie kann das sein bzw. was mache ich falsch?</p>
<p>Gruß<br />
Leo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/745770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745770</guid><dc:creator><![CDATA[Leo Freitag]]></dc:creator><pubDate>Wed, 16 Mar 2005 10:00:23 GMT</pubDate></item><item><title><![CDATA[Reply to Großes Wundern beim Ermitteln der struct-Größe on Wed, 16 Mar 2005 10:05:55 GMT]]></title><description><![CDATA[<p>Leo Freitag schrieb:</p>
<blockquote>
<p>Wenn ich jetzt per sizeof(Benutzer) die struct-Größe ermittle, erhalte ich den Wert 352.<br />
Wie kann das sein bzw. was mache ich falsch?</p>
</blockquote>
<p>kann sein, dass dein compiler alle struct-members an durch 4 teilbare adressen speichert? vielleicht kennt borland #pragma pack(1) ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/745780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/745780</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Wed, 16 Mar 2005 10:05:55 GMT</pubDate></item><item><title><![CDATA[Reply to Großes Wundern beim Ermitteln der struct-Größe on Wed, 16 Mar 2005 15:19:05 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>BCB-&gt;Projekt-&gt;Optionen-&gt;Erweiterte Compiler-Optionen-&gt;Datenausrichtung</p>
<p>MfG<br />
Klaus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/746062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/746062</guid><dc:creator><![CDATA[KlausB]]></dc:creator><pubDate>Wed, 16 Mar 2005 15:19:05 GMT</pubDate></item><item><title><![CDATA[Reply to Großes Wundern beim Ermitteln der struct-Größe on Wed, 16 Mar 2005 15:27:42 GMT]]></title><description><![CDATA[<p>Danke für die Tipps. Jetzt wäre nur noch schön wissen, welche Auswirkung sonst noch diese Einstellungen der Datenausrichtung haben.</p>
<p>Gruß<br />
Leo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/746070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/746070</guid><dc:creator><![CDATA[Leo Freitag]]></dc:creator><pubDate>Wed, 16 Mar 2005 15:27:42 GMT</pubDate></item><item><title><![CDATA[Reply to Großes Wundern beim Ermitteln der struct-Größe on Wed, 16 Mar 2005 17:22:08 GMT]]></title><description><![CDATA[<p>Achtung, wenn Du da jetzt nachträglich etwas änderst kannst Du alte Structs nicht mehr aus Dateien lesen. Passe Deine Berechnung der Ausrichtung an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/746184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/746184</guid><dc:creator><![CDATA[MichelRT]]></dc:creator><pubDate>Wed, 16 Mar 2005 17:22:08 GMT</pubDate></item></channel></rss>