指针加减整数,结果超出了指针指向数组的地址范围,使指针的值溢出
C++-Undefined-Behavior-45
设数组 a 的元素个数为 N,a 至 a + N 均为有效值(但不可对 a + N 解引用),超出这个范围的指针加减运算可能会使指针的值溢出,导致未定义的行为。
示例:
int a[N]; // Let ‘N’ be the array size
int* p;
p = a; // OK
p = a + N; // OK, won't overflow
p = a - 1; // May overflow, resulting in undefined behavior
p = a + N + 1; // May overflow, resulting in undefined behavior
依据
ISO/IEC 14882:2003 5.7(5)-undefined
ISO/IEC 14882:2011 5.7(5)-undefined