【问题标题】:Access violation reading location without location没有位置的访问冲突读取位置
【发布时间】:2015-02-03 01:07:38
【问题描述】:

嗯,我有两个功能

void RealFunction()
{
    MessageBox(NULL, "RealFunction()", "Trace", MB_OK);
}

void FakeFunction()
{
    MessageBox(NULL, "FakeFunction()", "Trace", MB_OK);
}

当我尝试这样做时,我得到了访问冲突错误

void main()
{
    DWORD target = (DWORD)RealFunction;
    DWORD trampoline = (DWORD)Trampoline;
    cout << target + " - " + trampoline << endl;
}

我不知道为什么在我尝试计算 DWORD 时它甚至会引发访问冲突?

【问题讨论】:

  • 哪一行导致错误?你能把它分解并找出导致错误的原因吗?
  • @BryanChen 它是iosfwd 中的length 函数
  • 原因是RealFunction 不是DWORD。我不知道你想做什么。
  • @JacobSeleznev,看看下面的答案...

标签: c++


【解决方案1】:
DWORD target = (DWORD)RealFunction;
DWORD trampoline = (DWORD)Trampoline;
cout << target + " - " + trampoline << endl;

你一定是指&lt;&lt;而不是+

您有一个const char *,即包含破折号的字符串文字。为此,您添加了两个可能相当大的数字,结果是一些荒谬的内存地址,它被解释为字符串指针。未定义的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2016-05-28
    • 2017-01-09
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多