让程序从指定地址开始执行的问题?(求助)
/*************这是代码****************/
#include <stdio.h>
void (*p)(void)
{
p = 10;
}
int main()
{
p();
printf("%p\n", p);
return 0;
}
/*************************************/
编译总是出现如下错误:
error C2239: unexpected token '{' following declaration of 'p'
[解决办法]
假设函数 void Test() 地址是0x1000
假设void Test()定义如下:
void Test (){
static int count =0;
printf("%d",++count);
}
int main(){
void (*p)() =(void (*)())0x1000;
p(); //这是没有问题的,结果是输出 从 1 开始,每次运行 输出就加一。
//假设 1)0x1000 只是一条指令的一半 ,指令被你截断,程序就飞了。
//假设 2) 0x1000 根本就不是代码,同样程序也就飞了
//另外,
// 3)现在的CPU 可以对代码进行保护,0x1000 如果不可执行,这样的代码;
// 会产生异常,程序也飞了,或者死了。
return 0;
}