C ++ - 获取特定内存地址的值

时间:2012-09-06 10:38:20

标签: c++ pointers memory dereference memory-address

我想知道是否可以做这样的事情:

unsigned int address = 0x0001FBDC; // Random address :P
int value = *address; // Dereference of address

意思是,是否可以在内存中获取特定地址的值?

由于

1 个答案:

答案 0 :(得分:15)

你可以而且应该这样写:

#include <cstdint>

uintptr_t p = 0x0001FBDC;
int value = *reinterpret_cast<int *>(p);

请注意,除非保证p指向整数,否则这是未定义的行为。如果您尝试访问不希望您解决的地址,标准操作系统将终止您的进程。但是,这可能是独立计划中的常见模式。

(早期版本的C ++应该说#include <stdint.h>intptr_t。)