2

重複の可能性:
GCC __attribute__((aligned(x)) の説明
最初の行の '_attribute_((aligned(4)));' の意味は何ですか?

この 2 つのコードは何を意味するのでしょうか? 特に、__attribute__ ((aligned(..)))部品。

struct my_struct {
  int64_t a;
  int64_t b;
} __attribute__ ((aligned(16)));

struct my_struct2 { double arr[4] __attribute__((aligned(64))); };
4

1 に答える 1

3

CPUレジスタは、多くの場合、メモリを指します。

レジスタをインクリメントすると、64ビットマシンではさらに64ビットを指します。ただし、そのセクション内の1バイトに到達したい場合は、コンパイラーがさらに作業を行う必要があります。

メモリをメモリの「エッジ」に揃えると、レジスタはそれらにはるかに高速にアクセスできますまた、構造体のメンバーが埋め込まれているため、スペースが無駄になっていることも意味します。構造体のメモリダンプを実行すると、パディングに驚かれる可能性があります。

于 2012-10-30T02:42:08.443 に答える