<?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[Adresse alignen]]></title><description><![CDATA[<p>Hallo,<br />
gibt es einen <strong>portablen</strong> Weg, eine Adresse hinsichtlich eines bestimmten Wertes zu alignen, also auf den naechsten durch eben diesen Wert teilbare Adresse zu bringen.<br />
Also was hier mit ints gemacht wird nur halt fuer Zeiger.</p>
<pre><code class="language-cpp">inline int Align(int adress, unsigned int alignment)
  {
    if (adress % alignment != 0)
      return adress + (alignment - (adress % alignment));

    return adress;
  }
</code></pre>
<p>Vermutlich muesste man casten, aber welcher Datentyp hat garantiert mindestens die Groesse eines Zeigers?</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240029/adresse-alignen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 05:30:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240029.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Apr 2009 18:24:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Adresse alignen on Thu, 30 Apr 2009 18:24:58 GMT]]></title><description><![CDATA[<p>Hallo,<br />
gibt es einen <strong>portablen</strong> Weg, eine Adresse hinsichtlich eines bestimmten Wertes zu alignen, also auf den naechsten durch eben diesen Wert teilbare Adresse zu bringen.<br />
Also was hier mit ints gemacht wird nur halt fuer Zeiger.</p>
<pre><code class="language-cpp">inline int Align(int adress, unsigned int alignment)
  {
    if (adress % alignment != 0)
      return adress + (alignment - (adress % alignment));

    return adress;
  }
</code></pre>
<p>Vermutlich muesste man casten, aber welcher Datentyp hat garantiert mindestens die Groesse eines Zeigers?</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703826</guid><dc:creator><![CDATA[hilfe-suchender]]></dc:creator><pubDate>Thu, 30 Apr 2009 18:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse alignen on Thu, 30 Apr 2009 18:41:36 GMT]]></title><description><![CDATA[<p>std::ptrdiff_t aus cstddef ist für sowas gedacht.</p>
<pre><code class="language-cpp">#include &lt;cstddef&gt;

inline void *Align(void *address, unsigned int alignment)
{
	std::ptrdiff_t ptr = static_cast&lt;std::ptrdiff_t&gt;(address);

	if (ptr % alignment != 0)
		return static_cast&lt;void*&gt;(ptr + (alignment - (ptr % alignment)));

	return address;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1703841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703841</guid><dc:creator><![CDATA[DerKuchen]]></dc:creator><pubDate>Thu, 30 Apr 2009 18:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse alignen on Thu, 30 Apr 2009 18:48:36 GMT]]></title><description><![CDATA[<p>Wunderbar, danke <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/1703844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703844</guid><dc:creator><![CDATA[hilfe-suchender]]></dc:creator><pubDate>Thu, 30 Apr 2009 18:48:36 GMT</pubDate></item></channel></rss>