您好,我的一个朋友向我展示了这段代码,以说明数组/堆栈边界检查。
#include <stdio.h>
void foo() {
    unsigned long long a[1];
    a[3] -= 5;
    printf("Print me!\n");    
}
int main(){ 
    foo();
    return 0;    
}
当我运行这段代码时,它一直在打印“打印我!\n”,它只是不会停止。我已经用 MingW 64bit 编译了代码。这里发生了什么事?我想有人解释一下,为什么它一直打印文本。