我有一个内存缓冲区,我想将其地址存储在一个无符号整数值中。
uint8_t* _buff = new uint8_t[1024];
uint64_t* _base_addr = (uint64_t *)_buff;
我希望将 _buff 或 _base_addr 指向的位置的地址(无论如何它是相同的位置)存储在 uint32_t 值中。
所以当我读取整数的值时,它会给我地址。 如何做到这一点?
最佳答案
您不能将地址存储在“say”uint32_t
中变量,因为地址可能不适合 - 在 64 位系统上,指针需要 64 位存储空间。不要固定大小,而是使用 uintptr_t
C99 ( <stdint.h>
) 或 C++11 ( <cstdint>
)。
要将地址存储在这样的整型变量中,请使用
uintptr_t variable = (uintptr_t)pointer;
关于c++ - 以无符号整数存储缓冲区地址;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545212/