【发布时间】:2018-01-21 15:26:05
【问题描述】:
我正在尝试以下方法将句柄转换为 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
但是,如果我这样做,我可以恢复 hInt:
uint64_t hIntBack = reinterpret_cast<uint64_t>(hPoint)
我不确定我是否理解这两种方法之间的区别。
【问题讨论】:
-
void* hPoint = reinterpret_cast<void*>(hInt);=>void* hPoint = reinterpret_cast<void*>(&hInt);
标签: c++ void-pointers reinterpret-cast static-cast