这是一道缓冲区溢出的题,代码如下:

#include <stdio.h>                    //头文件 #include <windows.h>         void Fun()                          //定义函数 {         while(1)                        //无限循环     {         printf("奥里给!\n");           //输出内容     } } int check()                 //定义函数 {     int arr[8];             //定义数组,移动可以存储9个数     arr[9] = (int)&Fun;     //???这是越界存储了什么,为什么会读出Fun()里的内容     return 0; } void main()                 //程序入口 {        check();                //调用函数     getchar();                //输入内容     return;                 //程序结束 }

一共四个问题:

  • 程序运行是如何输出Fun函数里的内容的?

  • arr[10] = (int)&Fun为什么输出不了Fun()里的内容?

这里的(int)&Fun; 是什么意思?为什么加上它就可以输出Fun()里的内容?

如能解答,万分感谢!


  • Willson1991    2020-03-31 10:50:10
  • 阅读 750    收藏 0    回答 1
  • 邀请
  • 收藏
  • 分享
发送
登录 后发表评论
  • 51testing软件测试圈微信