<?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[Alignment bei privaten Member-Variabeln]]></title><description><![CDATA[<p>Hallo<br />
Wenn ich im Header-File folgende privaten Variabeln definiere:</p>
<p>private :<br />
char dummy;<br />
char buffer[100];</p>
<p>und dann die Adressen der zwei Variabeln ausgebe, erhalte ich</p>
<p>Adresse dummy = 134520840<br />
Adresse buffer = 134520841</p>
<p>ein <em>(reinterpret_cast&lt;int</em>&gt; (buffer)) auf meinen buffer endet dann in einem SIGBUS error, da die Adresse des Buffers nicht richtig aligned ist.</p>
<p>Ist das gewollt, dass private Member-Pointer nicht aligned werden oder ist das ein Bug im Compiler?</p>
<p>Viele Grüße<br />
Quizard</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199872/alignment-bei-privaten-member-variabeln</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 09:58:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199872.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Dec 2007 21:54:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Alignment bei privaten Member-Variabeln on Fri, 07 Dec 2007 21:54:40 GMT]]></title><description><![CDATA[<p>Hallo<br />
Wenn ich im Header-File folgende privaten Variabeln definiere:</p>
<p>private :<br />
char dummy;<br />
char buffer[100];</p>
<p>und dann die Adressen der zwei Variabeln ausgebe, erhalte ich</p>
<p>Adresse dummy = 134520840<br />
Adresse buffer = 134520841</p>
<p>ein <em>(reinterpret_cast&lt;int</em>&gt; (buffer)) auf meinen buffer endet dann in einem SIGBUS error, da die Adresse des Buffers nicht richtig aligned ist.</p>
<p>Ist das gewollt, dass private Member-Pointer nicht aligned werden oder ist das ein Bug im Compiler?</p>
<p>Viele Grüße<br />
Quizard</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416797</guid><dc:creator><![CDATA[Quizard1]]></dc:creator><pubDate>Fri, 07 Dec 2007 21:54:40 GMT</pubDate></item><item><title><![CDATA[Reply to Alignment bei privaten Member-Variabeln on Sat, 08 Dec 2007 12:00:11 GMT]]></title><description><![CDATA[<p>Wieso, das char-Array braucht doch kein Alignment?<br />
Nicht jede Variable wird auf 4- oder 8-Alignment ausgerichtet, sondern nur entsprechend seiner Datengröße.</p>
<p>Warum deklarierst du denn den Puffer als char, wenn du ihn dann doch als int-Puffer benutzt, denn dieser wäre dann richtig ausgerichtet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1416968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1416968</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sat, 08 Dec 2007 12:00:11 GMT</pubDate></item><item><title><![CDATA[Reply to Alignment bei privaten Member-Variabeln on Sun, 09 Dec 2007 20:59:50 GMT]]></title><description><![CDATA[<p>Brauche den char-Buffer, da ich eine Nachricht von einem anderen Prozess empfange. Da steht dann am Anfang die Länge (als int) und danach unterschiedliche Daten.</p>
<p>Unter C und auch bei C++, wenn es keine member-Variablen sind, werden alle Arrays, die größer als 8 Bytes lang sind, auf Adressen gesetzt, die durch 8 teilbar sind. Nur die Member-Varaiblen nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417821</guid><dc:creator><![CDATA[Quizard]]></dc:creator><pubDate>Sun, 09 Dec 2007 20:59:50 GMT</pubDate></item><item><title><![CDATA[Reply to Alignment bei privaten Member-Variabeln on Tue, 11 Dec 2007 17:38:48 GMT]]></title><description><![CDATA[<p>Hat keiner eine Ahnung, ob das gewollt ist, dass Class-Member-Arrays nicht aligned werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418905</guid><dc:creator><![CDATA[Quizard1]]></dc:creator><pubDate>Tue, 11 Dec 2007 17:38:48 GMT</pubDate></item><item><title><![CDATA[Reply to Alignment bei privaten Member-Variabeln on Tue, 11 Dec 2007 21:00:28 GMT]]></title><description><![CDATA[<p>Es scheint ja gewollt zu sein, jedenfalls ist es in C (structs) und in C++ so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419057</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 11 Dec 2007 21:00:28 GMT</pubDate></item><item><title><![CDATA[Reply to Alignment bei privaten Member-Variabeln on Tue, 11 Dec 2007 21:54:40 GMT]]></title><description><![CDATA[<p>Stimmt, in C (structs) ists genauso.<br />
Vielen Dank für den Hinweis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419075</guid><dc:creator><![CDATA[Quizard1]]></dc:creator><pubDate>Tue, 11 Dec 2007 21:54:40 GMT</pubDate></item><item><title><![CDATA[Reply to Alignment bei privaten Member-Variabeln on Wed, 12 Dec 2007 16:10:42 GMT]]></title><description><![CDATA[<p>Quizard1 schrieb:</p>
<blockquote>
<p>Hat keiner eine Ahnung, ob das gewollt ist, dass Class-Member-Arrays nicht aligned werden?</p>
</blockquote>
<p>Ein char array wird kein compiler automatisch alligned anlegen.<br />
Da normalerweise ja auch nur mit den Assemblerbefehlen für bytes darauf zugegriffen wird. Mit Deinem &quot;bösen&quot; cast erlaubst Du Deinem compiler einen 4-Byte Befehl zu Benutzen (mit einer unalligned Adresse).</p>
<p>Ich würde das mit einer encode und decode Methode machen, die mit memcpy arbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1419484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1419484</guid><dc:creator><![CDATA[templäd]]></dc:creator><pubDate>Wed, 12 Dec 2007 16:10:42 GMT</pubDate></item></channel></rss>