小编luk*_*991的帖子

C缓冲区溢出的说明

我试着理解缓冲区溢出.这是我的代码:

#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.但事实并非如此.它只是打印"堆栈".有人可以解释一下原因吗?

c buffer-overflow

3
推荐指数
2
解决办法
253
查看次数

标签 统计

buffer-overflow ×1

c ×1