qq_43573676
1匹黑马
2020-03-29 23:51

老师们,麻烦帮忙看一下这个C程序!

  • c++
  • c语言
  • 开发语言

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

#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;                 //程序结束
}


一共四个问题:

  1. 程序运行是如何输出Fun函数里的内容的?
  2. arr[10] = (int)&Fun为什么输出不了Fun()里的内容?

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

如能解答,万分感谢!

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

3条回答