C++11 からの alignas でアラインメントを調整2021年06月13日 12時25分43秒

C++11 から alignof でアラインメントを取得出来るようになった。取得するだけでは、片手落ち。同時に alignas も導入された。

実際に試してみる。

% cat alignas.cpp
// c++ -std=c++11
#include <iostream>

struct sse_t
{
    float sse_data[ 4 ];
};

struct alignas( 8 ) sse8_t
{
    float sse_data[ 4 ];
};

struct alignas( 16 ) sse16_t
{
    float sse_data[ 4 ];
};

struct alignas( 32 ) sse32_t
{
    float sse_data[ 4 ];
};

int main()
{
    std::cout << sizeof( sse_t ) << std::endl;
    std::cout << sizeof( sse8_t ) << std::endl;
    std::cout << sizeof( sse16_t ) << std::endl;
    std::cout << sizeof( sse32_t ) << std::endl;
}
実行結果。必要なアラインメント以下の数字を渡すと、無視されるようだ。まあ、必要なメモリサイズ以下には出来ない。
% c++ -std=c++11 alignas.cpp
% ./a.out 
16
16
16
32

前回

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2021/06/13/9387509/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。