初学者问题:我如何获取指针的地址并将其保存为int? 例如:
int *ptr = xyz;
int i = static_cast<int>(ptr);
因此,如果ptr指向内存地址123,我应该是123.我的编译器说它是error: invalid static_cast from type 'int*' to type 'int'
。
答案 0 :(得分:12)
您可以使用reinterpret_cast
。 int
无法保证能够无损地存储指针,因此您应该使用std::intptr_t
类型。
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以使用以下函数将任何指针获取为 unsigned long。 int 不能保证完成任务。
template <typename T>
static constexpr inline auto ptrToAddr(T *pointer) noexcept
{
return reinterpret_cast<std::uintptr_t>(pointer);
}