c/c++ 关于访问数组超范围

近期在用二/三维数组时发现写了个小bug,但是编译、运行都未报错,以二维数组为例:

int a[3][3];
a[0][3] = 10;

int* b = a[0];
b[3] = 10;

以下标a[0][3]访问数组a,编译时会报index 3超出数组范围的warning,有的编译器可能也不会报这个warning,直接就通过了。

而用指针指向数组时,编译时都没报。

运行时是否报错就要看越界访问的那块内存是否有效,如果要避免此类bug,可以跑hwasan检测越界,即便是使用的指针指向数组,也可以检测出来

你可能感兴趣的:(c语言,c++,开发语言)