我希望& add1的值在变量中。我尝试了this answer,的建议,但它没有给出我期望的结果。
uintptr_t add1Address = reinterpret_cast<uintptr_t>(&add1);
此时,add1Address等于11669784
,即0x00B21118
然而,我的调试器(并使用HxD检查内存)告诉我&amp; add1 = 0x00B217C0
这里发生了什么?
完整代码如下
#include "stdafx.h"
#include <iostream>
int add1(int num, int num2);
int add1(int num, int num2)
{
return num + num2;
}
int main(void)
{
uintptr_t add1Address = reinterpret_cast<uintptr_t>(&add1);
std::cout << std::hex << add1Address;
}
我在debugger看到的是
答案 0 :(得分:1)
让我猜一想。
这可能是因为你可能有增量链接。
答案 1 :(得分:1)
您收到的地址是跳转到调试器显示的地址。这允许重定向函数。
例如:
add1:
00B211EF jmp add1 (0B21730h)
add1Address
的值为0x00B211EF
,但Visual Studio会将0x00B21730
显示为add()
的地址。