我想知道是否可以做这样的事情:
unsigned int address = 0x0001FBDC; // Random address :P
int value = *address; // Dereference of address
意思是,是否可以在内存中获取特定地址的值?
由于
答案 0 :(得分:15)
你可以而且应该这样写:
#include <cstdint>
uintptr_t p = 0x0001FBDC;
int value = *reinterpret_cast<int *>(p);
请注意,除非保证p
指向整数,否则这是未定义的行为。如果您尝试访问不希望您解决的地址,标准操作系统将终止您的进程。但是,这可能是独立计划中的常见模式。
(早期版本的C ++应该说#include <stdint.h>
和intptr_t
。)