vs_2022在x86环境下一个有趣的bug

最近了解到一个有趣的bug,分享给大家。软件是vs_2022,x86环境。

#define _CRT_SECURE_NO_WARNINGS 1

#include 
int main()
{
    int i = 0;
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    for (i = 0; i <= 12; i++)
    {
        arr[i] = 0;
        printf("hello bit\n");
    }
    return 0;
}

大家想一想运行结果是什么呢?

结果是死循环。

我们可以发现,打印是 i ==12是明显越界访问了,而碰巧的是arr[12]的与 i 的地址相同,当arr[12]赋值0时,i也变成0,又再次进入循环中,周而复始,就变成死循环了。

vs_2022在x86环境下一个有趣的bug_第1张图片

你可能感兴趣的:(bug,算法,c语言)