Мне было интересно, возможно ли сделать что-то вроде этого:
unsigned int address = 0x0001FBDC; // Random address :P
int value = *address; // Dereference of address
Имеется в виду, возможно ли получить значение определенного адреса в памяти?
Спасибо
Вы можете и должны написать это так:
#include <cstdint>
uintptr_t p = 0x0001FBDC;
int value = *reinterpret_cast<int *>(p);
Обратите внимание, что если нет какой-либо гарантии, что p
указывает на целое число, это неопределенное поведение. Стандартная операционная система убьет ваш процесс, если вы попытаетесь получить доступ к адресу, который он не ожидал от вас. Тем не менее, это может быть обычным явлением в автономных программах.
(Более ранние версии C ++ должны сказать #include <stdint.h>
а также intptr_t
.)
Других решений пока нет …