从地址调用函数时,C 程序崩溃

C++ Program crash when calling function from address

本文关键字:程序 崩溃 地址 调用 函数      更新时间:2023-10-16
void print()
{
  printf("Test");
}

这不起作用

test.exe中的0x00402826未经处理的异常:0xc0000005:访问 违规阅读位置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编译:no

因此,每次运行中的地址都是静态的。

不能保证当您在main()之前声明print()在main()之前都将其编译为几个地址(正如人们可能期望的那样)。从这里开始,由于您的第二个示例上的main()函数与第一个示例(较大)不同,因此print()函数的地址可能在两个示例之间发生了变化。

如果您真的想找出功能的地址,我建议您使用调试器找到该功能。

希望它有帮助。