从内存地址获取字节?

Get Byte from memory address?

我仍在学习 C++,并花了数小时试图找出一种方法来将字节存储在某个内存地址,在我的例子中,所有(好吧,几乎所有)内存地址都不是动态的 - 所以地址指向,例如变量不会改变。

所以我正在尝试检索存储在已知内存地址的单个字节。 例如,我们说:0x20000

我要检索的字节是,例如,假设 0xEF

现在我如何在不使用取消引用运算符的情况下检索字节? 所以基本上我需要得到 0xEF 而不必声明它是什么类型的数据类型,就像字面上只是物理地得到字节 0xEF。 希望这是有道理的,我是个菜鸟:/

Now how would i retrieve the byte without using the dereference operator?

如果不取消引用访问的地址,您将无法执行此操作。您可以寻址的最小数据类型是 char。对于字节,通常使用 typedef unsigned char uint8_t

因此您必须使用 reinterpret_cast<uint8_t*>(addr) 访问内存地址并取消引用以获取值。

取消引用内存地址是获取字节值的唯一方法。

将内存地址类型化为类型化指针然后取消引用是最直接的方式,例如:

unsigned char value = *(reinterpret_cast<unsigned char*>(0x20000));

但是,要回答你的问题:

how would i retrieve the byte without using the dereference operator?

您可以使用 memcpy() 或类似函数 间接 取消引用内存,例如:

#include <cstring>

unsigned char value;
std::memcpy(&value, (void*)0x20000, 1);