将函数的地址转换为UINTPTR_T给我不正确的结果
Cast address of function to UINTPTR_T giving me incorrect result
我想要变量中的 &add1 值。我尝试了这个答案中的建议,但它没有给出我期望的结果。
uintptr_t add1Address = reinterpret_cast<uintptr_t>(&add1);
此时,add1地址等于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;
}
我在调试器中看到的内容在这里
让我做一个疯狂的猜测。
这是因为您可能有增量链接。
看看这个:附加的探查器库中的 c++ 函数地址与主题代码库中的地址不同
在你得到的地址处是跳转到调试器显示的地址。这允许重定向函数。
例如:
add1:
00B211EF jmp add1 (0B21730h)
add1Address
的值将是0x00B211EF
,但Visual Studio将显示0x00B21730
作为add()
的地址。
相关文章:
- 密码登录程序将永远循环并显示不正确的结果
- 特征 LLT 模块给出不正确的结果?
- 计算幂级数的数学结果不正确
- wcslen() 在使用编译指示包时返回不正确的结果
- 使用动态分配的数组进行矩阵乘法;结果不正确
- CMake 查找特征不正确的结果
- 将函数的地址转换为UINTPTR_T给我不正确的结果
- 使用 C++ 中的运算符重载显示不正确的结果
- 简单的程序比较阵列运行但给出不正确的结果
- 在运行libtorch的模型时获得的结果是不正确的,该模型经过训练并从Pytorch出口
- 当我输入分数值时,它返回不正确的结果
- time_t提高日期转换,给出不正确的结果
- 为什么隐式类型转换在此代码中结果不正确
- 排序向量不断修改数据并打印不正确的结果
- 使用Boost Polygon的减法结果不正确
- 脑解释器在C++产生不正确的结果
- 具有OFN_ALLOWMULTISELECT不正确的快捷方式结果的 CFileDialog
- 递归阶乘函数在"22!"上产生不正确的结果
- GLM 矩阵乘法向量给出不正确的结果
- 浮点数和由于舍入行为导致的不正确结果