这是一道缓冲区溢出的题,代码如下:
#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()里的内容?
如能解答,万分感谢!