W jego November 1, 2005 C++ column, Herb Sutter pisze ...W jaki sposób działa pułapka sprzętowa w trójwymiarze-końcu, nawet jeśli wskaźnik nie jest nigdy dereferenced?
int A[17];
int* endA = A + 17;
for(int* ptr = A; ptr < endA; ptr += 5)
{
// ...
}
[O] n niektóre architektury procesora, w tym dotychczasowymi, wspomniany kod może powodować pułapka sprzętu występuje w punkcie, w którym tworzony jest trzy-koniec-końcowy wskaźnik , niezależnie od tego, czy wskaźnik jest zawsze dereferencjonowany czy nie.
W jaki sposób pułapka na procesor na sygnaturze bitowej? Co o ...
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);
Bonus pytanie: Czy wyrażenie „niektóre obecne architekturach procesora” są zwykle rozumiane jako odnoszące się wyłącznie do produktów transportowych, czy też to wyimaginowane architektur oraz jeśli dzieło fikcji, w której są opisane lub nawiązywały do ma ostatniej daty publikacji?
czy to nie koniec czterech lat, podobnie jak koniec A to koniec z przeszłością? –