这与找到的问题标题完全相同 here - 我还想将内存地址存储在变量中 - 或者更确切地说,将 void*
存储在变量中。但是,我宁愿将它存储在某种形式的 int
而不是 string
中,因为我想之后将其转换回指针。
这是因为它是我想用 boost serialize 序列化的类的成员,如果我确实使用了 void*
,boost serialize 可能会尝试存储指针是什么指向,这对我来说不是很明智。
我需要这个用于 32 位和 64 位 gcc 和 MSVC,所以基本上我想知道是否有一个内置的整数类型,它是同一平台上的指针大小。或者,我想我需要 IFDEF
我自己的类型?
最佳答案
intptr_t
和 uintptr_t
是足以容纳 void*
的整数类型.它们由 C++11 在 <cstdint>
中定义和 C99 在 <stdint.h>
如果uintptr_t
不可用,您可以尝试uintmax_t
,在相同的 header 中定义或由 Boost 在 <boost/cstdint.hpp>
中定义.
关于c++ - 如何将内存地址存储为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13235280/