7

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

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

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

谢谢

4

1 回答 1

20

你可以而且应该这样写:

#include <cstdint>

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

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

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

于 2012-09-06T10:41:21.527 回答