读书人

让程序从指定地址开始执行的有关问题?

发布时间: 2013-12-30 14:16:08 作者: rapoo

让程序从指定地址开始执行的问题?(求助)
/*************这是代码****************/
#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;
}

读书人网 >C语言

热点推荐