<?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[Struct Alignment]]></title><description><![CDATA[<p>Eine Frage zum Struct Alignment.</p>
<p>Ich verstehe auf dieser Seite Beispiel 3 nicht:<br />
<a href="http://msdn.microsoft.com/en-us/library/71kf49f1.aspx?appId=Dev10IDEF1&amp;l=EN-US&amp;k=k(VC.PROJECT.VCCLCOMPILERTOOL.STRUCTMEMBERALIGNMENT)&amp;rd=true" rel="nofollow">http://msdn.microsoft.com/en-us/library/71kf49f1.aspx?appId=Dev10IDEF1&amp;l=EN-US&amp;k=k(VC.PROJECT.VCCLCOMPILERTOOL.STRUCTMEMBERALIGNMENT)&amp;rd=true</a></p>
<p>Wenn das Alignment 4 ist, dann muss doch &quot;b&quot; bei Offset +4 beginnen, oder? Im Beispiel 2 beginnt &quot;b&quot; ja auch an der Alignmentgrenze (8).</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277155/struct-alignment</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 04:22:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277155.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 13 Nov 2010 22:36:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Struct Alignment on Sat, 13 Nov 2010 22:36:07 GMT]]></title><description><![CDATA[<p>Eine Frage zum Struct Alignment.</p>
<p>Ich verstehe auf dieser Seite Beispiel 3 nicht:<br />
<a href="http://msdn.microsoft.com/en-us/library/71kf49f1.aspx?appId=Dev10IDEF1&amp;l=EN-US&amp;k=k(VC.PROJECT.VCCLCOMPILERTOOL.STRUCTMEMBERALIGNMENT)&amp;rd=true" rel="nofollow">http://msdn.microsoft.com/en-us/library/71kf49f1.aspx?appId=Dev10IDEF1&amp;l=EN-US&amp;k=k(VC.PROJECT.VCCLCOMPILERTOOL.STRUCTMEMBERALIGNMENT)&amp;rd=true</a></p>
<p>Wenn das Alignment 4 ist, dann muss doch &quot;b&quot; bei Offset +4 beginnen, oder? Im Beispiel 2 beginnt &quot;b&quot; ja auch an der Alignmentgrenze (8).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980142</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980142</guid><dc:creator><![CDATA[align0r]]></dc:creator><pubDate>Sat, 13 Nov 2010 22:36:07 GMT</pubDate></item><item><title><![CDATA[Reply to Struct Alignment on Sat, 13 Nov 2010 23:20:13 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Das Alignment der gesamten struct sagt nicht direkt etwas über das Alignment der einzelnen Member aus.<br />
b hat im Beispiel 3 ist ein Alignment von 2 Bytes. Daher muss ein leeres &quot;Füllbyte&quot; (padding) nach char a eingefügt werden. In Beispiel 2 ist b vom Typ double und hat (meist) ein 8 Byte Alignment.</p>
<p>Das Alignment der gesamt struct beeinflusst in erster Linie das padding hinter dem letzten Member.</p>
<p>Da short hier (auf x86) nur ein 2-Byte Alignment braucht, macht es ja keinen Sinn ein größeres Padding einzusetzen.<br />
Es kann aber durchaus Architekturen geben, wo short zwar nur 2 Byte groß ist aber trotzdem ein Alignment von 4 oder 8 Bytes besitzt... dann wäre ein größeres Padding gerechtfertigt.</p>
<p>So weit mir bekannt ist erhalten structs daher ihr Alignment von dem Member mit dem größten Alignment.</p>
<p>Du kannst aber auch das Alignment der Member einzeln festlegen:</p>
<pre><code class="language-cpp">struct X
{
  __declspec(align(8)) char a;
  __declspec(align(8)) short b;
  __declspec(align(8)) int c;
  __declspec(align(8)) double d;
};
</code></pre>
<p>lg, xor</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980152</guid><dc:creator><![CDATA[xor]]></dc:creator><pubDate>Sat, 13 Nov 2010 23:20:13 GMT</pubDate></item></channel></rss>