处理器数据表中列出了许多不同类型的陷阱,例如BusFault,MemManage Fault,Usage Fault和Address Error.
他们的目的是什么?如何在故障处理中使用它们?
在2005年11月1日的C++专栏中,Herb Sutter写道......
int A[17];
int* endA = A + 17;
for( int* ptr = A; ptr < endA; ptr += 5 )
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
[O]在某些CPU架构(包括当前的架构)中,上述代码可能导致硬件陷阱发生在创建三个结束指针的位置,无论该指针是否被解除引用.
如何在bitpattern上捕获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; …Run Code Online (Sandbox Code Playgroud)