void print()
{
printf("Test");
}
这不起作用
test.exe中0x00402826处的未处理异常:0xC0000005:Access 违规读取位置0x00000000。
int main()
{
typedef void function(void);
function* Execute = (function*)0x00402810;
Execute();
}
但这有效吗?
int main()
{
void(*func)();
func = &print;
cout << func;
getchar();
typedef void function(void);
function* Execute = (function*)0x00402810;
Execute();
}
我正在使用/ Dynamicbase进行编译:否
所以地址在每次运行时都是静态的。
答案 0 :(得分:0)
当你在main()之前声明print()时,无法保证在main()之前实际编译为几个地址(正如人们所期望的那样)。从这里开始,由于第二个示例中的main()函数与第一个示例(较大)不同,print()函数的地址可能在两个示例之间发生了变化。
如果你真的想知道你的功能的地址,我建议使用调试器找出它。
希望它有所帮助。