[英]Cast pointer address to int
初學者問題:如何獲取指針的地址並將其保存為 int? 例子:
int *ptr = xyz;
int i = static_cast<int>(ptr);
所以如果 ptr 指向內存地址 123,我應該是 123。我的編譯器說這是一個error: invalid static_cast from type 'int*' to type 'int'
。
猜猜我錯過了什么,但我不知道是什么。
您可以使用reinterpret_cast
。 但是,不能保證int
能夠無損地存儲指針,因此您應該改用std::intptr_t
類型。
您可以使用以下函數將任何指針作為 unsigned long 獲取。 int 不能保證完成任務。
template <typename T>
static constexpr inline auto ptrToAddr(T *pointer) noexcept
{
return reinterpret_cast<std::uintptr_t>(pointer);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.