• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dostęp do zmiennej przez dwa programy

VPS Starter Arubacloud
+1 głos
163 wizyt
pytanie zadane 1 stycznia 2017 w C i C++ przez dociekliwy Nowicjusz (150 p.)

Witam, czytam książkę o C++ Praty.

Zakończyłem rozdział o wskaźnikach i aby utrwalić zdobytą wiedzę napisałem kilka programów, ale w jednym

przypadku spotkałem się z innym rezultatem od zakładanego i nie potrafię tego wytłumaczyć.

Założenie jest takie, piszę dwa programy, w pierwszym tworzę zmienną i sprawdzam adres pod jakim zmienna 

została utworzona .

W drugim programie tworzę wskaźnik i przypisuję do niego adres zmiennej utworzonej w pierwszym programie.

Kod pierwszego programu.

#include <iostream>
using namespace std;

int main()
{
    int a=125;
    cout<<&a<<endl;  //sprawdzam adres zmiennej a.
    cin>>a;          // aby program nie zakonczyl dzialania.
}

Pierwszy program cały czas działa , a ja w drugim do wskaźnika przypisuję adres zmiennej a i odpalam program.

Kod drugiego programu .

#include <iostream>

using namespace std;

int main()
{
    int *ws;
    ws=(int *)0x22fefc; //przypisuje do wskaznika adres pod
                        // którym pierwszy program zapisal zmienna a .
    cout<<*ws<<endl;
}

Problem jest taki że zamiast w drugim programie wyświetlić wartość zmiennej a zostaje wyświetlona jakaś 

przypadkowa liczba . Czemu tak?

Skoro wskaźnik wskazuje adres pod którym została utworzona zmienna a więc czemu drugi program nie wyświetla 125 tylko jakieś śmieci .

 

1 odpowiedź

0 głosów
odpowiedź 1 stycznia 2017 przez unknown Nałogowiec (39,560 p.)
https://en.m.wikipedia.org/wiki/Virtual_memory?wprov=sfla1

Dostać się do pamięci innego procesu nie jest tak łatwo.
komentarz 2 stycznia 2017 przez morele123 Gaduła (4,790 p.)
Po wartości. Adresu mi nie widzi, jak dodaje manualnie to nie widzi w tym adresie nic.
komentarz 2 stycznia 2017 przez unknown Nałogowiec (39,560 p.)
Wyłączyłeś optymalizacje kompilatora? W gcc służy do tego flaga -O0
komentarz 2 stycznia 2017 przez morele123 Gaduła (4,790 p.)
Miałem wyłączoną, włączona to samo.
komentarz 2 stycznia 2017 przez unknown Nałogowiec (39,560 p.)
Jutro się nad tym zastanowie.
komentarz 3 stycznia 2017 przez unknown Nałogowiec (39,560 p.)
Nie wiem. Nie przychodzi mi nic do głowy, może nagraj jakiś film co dokładnie robisz bo na razie błądzę w ciemnościach(najlepiej wyślij mi na PW, żeby już nie robić burdelu w komentarzach).

Podobne pytania

0 głosów
1 odpowiedź 292 wizyt
pytanie zadane 19 stycznia 2021 w C i C++ przez Mytwi Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 167 wizyt
0 głosów
2 odpowiedzi 3,644 wizyt

92,454 zapytań

141,262 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...