栈越界的区别
struct Test
{int a;int b;int arr[1];int c;
};
當定義Test t; t.arr[1] = 0;時, t.arr[1]將造成arr的訪問越界, 實際是覆蓋了t.c變量
arr+2, arr+3等, 肯定是覆蓋了更高的地址部分;? c地址比arr高。 因此c可能被覆蓋。
arr+2、arr+3也肯定是覆蓋更高地址部分。 但c/c++棧是向低地址部分增長, 因此是覆蓋b甚至覆蓋a。。
a:140734632597980,
b:140734632597976.
&arr[0]:140734632597968,
&arr[1]:140734632597972,?
實測看, &a < &b < &c ; ?且&arr[0]不在&b, &c之間,,,,
總結
- 上一篇: 安装gcc 4.8.2 for cxx
- 下一篇: tcp http https