c++ - 以无符号整数存储缓冲区地址;

标签 c++ pointers

我有一个内存缓冲区,我想将其地址存储在一个无符号整数值中。

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/

相关文章:

C++ 和 Windows : Is SYSTEMTIME always based on the Gregorian calendar?

c++ - 添加两个不同大小的独立 int vector 的值?

c 字符指针比较

c - 如何从 C 中的函数返回字符数组?

c++ - posix 中的健壮 rwlock

c++ - 如何处理不保证返回任何内容的函数?

c++ - C/C++ 中的指针

c - 在 C 中,是否允许将某种类型的指针直接转换为另一种类型的指针?

c - 结构操作需要一些解释

c++ - 将shared_ptr<void>转换为shared_ptr<type>时智能指针的行为