¿Cómo ocurre una captura de hardware en un puntero de tres pasadas, incluso si el puntero nunca se hace referencia?

En su1 de noviembre de 2005 columna de C ++, Herb Sutter escribe ...

<code>int A[17];
int* endA = A + 17;
for( int* ptr = A; ptr < endA; ptr += 5 )
{
  // ...
}
</code>

[O] n algunas arquitecturas de CPU, incluidas las actuales, el código mencionado anteriormente puede hacer que se produzca una captura de hardware en el punto donde se crea el puntero de tres pasadas, ya sea que el puntero se haya referenciado o no.

¿Cómo se atrapa una CPU en un patrón de bits? Qué pasa ...

<code>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); 
</code>

Pregunta extra: ¿Debe entenderse que la frase "algunas arquitecturas de CPU actuales" se refiere únicamente a productos de envío, o incluye arquitecturas imaginarias también si el trabajo de ficción en el que se describen o aluden tiene una fecha de publicación reciente?

Respuestas a la pregunta(2)

Su respuesta a la pregunta