场景:
1.在阅读std::string的源码时,发现有一段代码很奇怪,下标是-1的数组,从语法上讲并没有错,即地址p-1,
_Rep*
_M_rep() const
{ return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
//1.数组是-1的情况.
int prev = 9;
int a[2] = {0,2};
int next = 8;
cout << "a[-1]: " << a[-1] << endl; //1.越界-2,指向低位指针地址.
cout << "a[3]: " << a[2] << endl; //1.越界1,指向高位指针地址
cout << "&prev: " << (int*)&prev << endl;
cout << "&a: " << (int*)a << endl;
cout << "&a[0]: " << (int*)&a[0] << endl;
cout &l