C++ - *(int**) адрес? Что здесь происходит?

Я просмотрел некоторый код, который в основном является хуком (инъекция DLL). В коде я обнаружил следующее:

int Address = 0x12345678; //Address of a memory location of target process
int *Pointer = *(int**) Address; //What happens here?

Таким образом, похоже, что 0x12345678 (адрес является лишь примером) является указателем. Таким образом, значение, которое мы хотим получить, хранится по адресу памяти 0x12345678. Правильно ли я догадываюсь, что происходит следующее:

-Cast Адрес int-указателя и разыменование его, чтобы получить значение, хранящееся в 0x12345678

-Считать значение по адресу памяти 0x12345678 как int-указатель тоже

Заранее большое спасибо и извините за мой плохой английский!

1 ответ

-Cast Адрес int-указателя и разыменование его, чтобы получить значение, хранящееся в 0x12345678

Нет, это бросает Address на указатель на указатель на int. И разыменовывает его, чтобы получить указатель на int, хранящийся в 0x12345678

-Считать значение по адресу памяти 0x12345678 как int-указатель тоже

Да.

Другие вопросы по тегам