2005年11月1日のC++コラムで、ハーブサッターは次のように書いています...
int A[17];
int* endA = A + 17;
for( int* ptr = A; ptr < endA; ptr += 5 )
{
// ...
}
[O]現在のCPUアーキテクチャを含む一部のCPUアーキテクチャでは、前述のコードにより、ポインタが逆参照されているかどうかに関係なく、最後から3番目のポインタが作成された時点でハードウェアトラップが発生する可能性があります。
CPUはビットパターンをどのようにトラップしますか?どうですか...
int A[17];
// (i) hardware will trap this ?
int *pUgly = A + 18;
// (ii) hardware will trap this, too?
int *pEnd = A + 17;
++pEnd;
// (iii) will this fool it?
int *precious = A + 17;
unsigned long tricksy = reinterpret_cast<unsigned long>(precious) ;
++tricksy;
int *pHobbits = reinterpret_cast<int *>(tricksy);
ボーナスの質問:「一部の現在のCPUアーキテクチャ」というフレーズは、通常、製品の出荷のみを指すと理解する必要がありますか、それとも、それらが説明または暗示されているフィクションの作品に最近の発行日がある場合は、架空のアーキテクチャも含まれますか?