У меня проблема - со следующим кодом я пытаюсь выяснить, что хранится на определенном адресе, и как долго моя статическая переменная хранится в этой конкретной позиции. (Я читал, что статические переменные хранятся бесконечно и были весьма удивлены - хотели проверить, было ли это правдой). Код определяет статическую переменную (ее адрес в моей системе равен 0x1000020c0 - это, вероятно, довольно случайный, но он всегда был случайным)
Если теперь я хочу узнать, какое целочисленное значение хранится по этому адресу, я должен сначала распечатать адрес с помощью $number, который затем дает 0x1000020c0. Повторное или повторное толкование адреса (0x1000020c0) дает только 100! если адрес был напечатан до или если я использую & number в повторной интерпретации/переработке.
Может кто-нибудь объяснить, почему это так?
int static number = 100;
// std::cout << number << std::endl; <- prints 100
// prints 100 and the address 0x1000020c0 in my case
// std::cout << number << " " << &number << std::endl;
// this does not work unless &number is printed previously
// std::cout << "Value is : " << *reinterpret_cast<int*>(0x1000020c0) << std::endl;
// this does work and show the correct value (100)
std::cout << "Value is : " << *reinterpret_cast<int*>(&number) << std::endl;