您好,我的一个朋友向我展示了这段代码,以说明数组/堆栈边界检查。
#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 编译了代码。这里发生了什么事?我想有人解释一下,为什么它一直打印文本。