2011-08-13 14 views
8

alignasalignofのキーワードの目的が何であるかを理解するのに問題があります。アライメントが何であるかを十分に理解していません。alignasキーワードとalignofキーワードはどのようなものですか?

私が理解しているように、メモリアドレスは、nで割り切れる場合はnバイトに整列します。つまり、一度にnバイトを数えることで得られます。 )。また、alignasキーワードは、変数宣言の接頭辞の際に、変数の格納先アドレスの整列方法を指定し、alignofは変数のアドレスの整列方法を返します。

しかし、これはアラインメントや正しいキーワードであるとは確信していません。alignof/alignasキーワード - 私が間違っている点を修正してください。これらのキーワードをどのように使用するのかわかりませんので、誰かがその目的が何であるかを指摘できれば幸いです。

答えて

8

特別なタイプの中には、通常よりも多くのバイトで整列する必要があります。たとえば、GPUへの最も効率的なコピーのためには、マトリックスをx86では16バイトに整列する必要があります。 SSEベクタータイプもこのように動作します。したがって、コンテナ型を作成する場合は、格納または割り当てしようとしている型の配置要件を知っている必要があります。

+0

キーワードは特定の状況でのみ効率的に使用されますか? –

+0

@ Keand64:多くのプラットフォームや状況では、誤った配置はエラーです。 x86はより寛容です。一般的なケースでは、UDTの必要な配置を尊重する必要があります。 – Puppy

+0

申し訳ありませんが、ありがとうございます。 –

関連する問題