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

Zyy*_*ins 5 c++ memory pointers memory-address dereference

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

unsigned int address = 0x0001FBDC; // Random address :P
int value = *address; // Dereference of address
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Ker*_* SB 16

你可以而且应该这样写:

#include <cstdint>

uintptr_t p = 0x0001FBDC;
int value = *reinterpret_cast<int *>(p);
Run Code Online (Sandbox Code Playgroud)

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

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