次の方法で共有


__unaligned

__unaligned の修飾子を指定してポインターを宣言する場合コンパイラはポインターが配置されないデータのアドレスを前提としています。その結果IPF (Itanium Processor Family) コンピューターを対象とするアプリケーション (IPF) の場合コンパイラは 1 バイトでアライメントされていないデータを一度に読み込むコードを生成します。

解説

__unaligned の修飾子は x64 と Itanium コンパイラに対して有効ですがはコンピューターを対象とするアプリケーションにのみ影響します。この修飾子はアドレスのみデータの配置について説明します ; ポインター自体が整列すると見なされます。

Itanium。またアライメントされたデータにアクセスしたり違反を処理するのに時間がパフォーマンスを弱めます配置の違反が発生します。  プロセッサがデータを一度に読み取り違反が発生しないようにするために __unaligned の修飾子を 1 バイトを使用します。この修飾子は x64 のアプリケーションに   x64 のプロセッサが発生しないようにアライメントされたデータを処理するためです。

代入の詳細については、次のトピックを参照してください。

使用例

// unaligned_keyword.cpp
// compile with: /c
// processor: x64 IPF
#include <stdio.h>
int main() {
   char buf[100];

   int __unaligned *p1 = (int*)(&buf[37]);
   int *p2 = (int *)p1;

   *p1 = 0;   // ok

   __try {
      *p2 = 0;  // throws an exception
   }
   __except(1) {
      puts("exception");
   }
}

参照

関連項目

C++ のキーワード