我试着理解缓冲区溢出.这是我的代码:
#include <stdio.h>
int main()
{
char buf[5] = { 0 };
char x = 'u';
printf("Please enter your name: ");
gets(buf);
printf("Hello %s!", buf);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该buf数组的大小为5,并使用0es初始化.所以(使用null终止)我有四个字符的空间.如果我输入五个字符(例如堆栈),我会覆盖空终止字符并printf打印"Hello stacku!" 因为后续的变量x.但事实并非如此.它只是打印"堆栈".有人可以解释一下原因吗?