我想要变量中 &add1 的值。我尝试了 this answer, 的建议但它没有给出我期望的结果。
uintptr_t add1Address = reinterpret_cast<uintptr_t>(&add1);
此时add1Address等于11669784
,即0x00B21118
但是我的调试器(并使用 HxD 检查内存)告诉我 &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 中看到的内容在这里
最佳答案
让我大胆猜测一下。
这是因为您可能启用了增量链接。
关于c++ - 将函数地址转换为 UINTPTR_T 给出不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45107804/