указатели — получить значение определенного адреса памяти

Мне было интересно, возможно ли сделать что-то вроде этого:

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

Имеется в виду, возможно ли получить значение определенного адреса в памяти?

Спасибо

5

Решение

Вы можете и должны написать это так:

#include <cstdint>

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

Обратите внимание, что если нет какой-либо гарантии, что p указывает на целое число, это неопределенное поведение. Стандартная операционная система убьет ваш процесс, если вы попытаетесь получить доступ к адресу, который он не ожидал от вас. Тем не менее, это может быть обычным явлением в автономных программах.

(Более ранние версии C ++ должны сказать #include <stdint.h> а также intptr_t.)

15

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]