C++ 将uint64\u t转换为void*并返回

C++ 将uint64\u t转换为void*并返回,c++,void-pointers,reinterpret-cast,static-cast,C++,Void Pointers,Reinterpret Cast,Static Cast,我正在尝试以下方法将句柄转换为void*,然后以以下方式返回到句柄 uint64_t hInt = 154071804376; //assume this is a valid memory location void* hPoint = reinterpret_cast<void*>(hInt); uint64_t hIntBack = *static_cast<uint64_t*>(hPoint); unable to recover hInt here, get

我正在尝试以下方法将句柄转换为void*,然后以以下方式返回到句柄

uint64_t hInt = 154071804376; //assume this is a valid memory location

void* hPoint = reinterpret_cast<void*>(hInt);

uint64_t hIntBack = *static_cast<uint64_t*>(hPoint); unable to recover hInt here, getting some other number 140727986249696
我不确定我是否理解这两种方法之间的区别。

在本代码中:

uint64_t hIntBack = *static_cast<uint64_t*>(hPoint); unable to recover hInt here, getting some other number 140727986249696
uint64\u t hIntBack=*静态强制转换(hPoint);无法恢复此处的提示,正在获取其他号码140727986249696
实际上,您正在查看内存位置
hPoint
处的值。这是因为您正在将其转换为
uint64\u t*
,然后在该位置获取值


作为补充说明,虽然uint64_t适用于64位机器,但执行类似操作的标准方法是使用uintptr_t,它保证为您编译的体系结构的指针大小。如果要在非XX位机器上使用uintXX\u t编译代码,编译器将带来错误

void*hPoint=reinterpret\u cast(提示)=>
void*hPoint=reinterpret\u cast(&hInt)类似的问题
uint64_t hIntBack = *static_cast<uint64_t*>(hPoint); unable to recover hInt here, getting some other number 140727986249696