数据存在数组里 数据存在栈里
代码全览
/* 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个,则超出数组大小的数据被保存在栈里,这些存在栈里的元素输出即出栈。