CSAPP:bufdemo(gcc)

    xiaoxiao2025-02-26  40

    数据存在数组里 数据存在栈里

    代码全览

    /* Demonstration of buffer overflow */ #include <stdio.h> #include <stdlib.h> /* Implementation of library function gets() */ char *gets(char *dest) { int c = getchar(); char *p = dest; while (c != EOF && c != '\n') { *p++ = c; c = getchar(); } *p = '\0'; return dest; } /* Read input line and write it back */ void echo() { char buf[4]; /* May too small! */ gets(buf); puts(buf); } void call_echo() { echo(); } /*void smash() { printf("I've been smashed!\n"); exit(0); } */ int main() { printf("Type a string:"); call_echo(); return 0; }

    运行结果

    说明

    定义的char 型数组长度为4个字节。 若用户输入的数据不超过4个,那这些数据是保存在数组中的,输出的时候从数组中依此输出。 若用户输入的数据超过了4个,则超出数组大小的数据被保存在栈里,这些存在栈里的元素输出即出栈。

    最新回复(0)