Problem z volatile - Naruszenie ochrony pamięci.
Ostatnio zmodyfikowano 2016-02-12 20:31
Pawlo3 Temat założony przez niniejszego użytkownika |
Problem z volatile - Naruszenie ochrony pamięci. » 2016-02-12 19:46:15 Chciałem zobaczyć, do czego służy słowo klucz. volatile . Jednak chyba źle zrozumiałem jego znaczenie. W terminalu, po wykonaniu pliku volch, pojawiło mi się w nim: NAruszenie ochrony pamięci. Oto pliki volcr.cpp: #include <std> int main( void ) { volatile int err = 57; cout << "err: " << err << '\n' << "address: " <<( int * )( & err ); char at[ 50 ]; cin >> at; cout << "err: " << err << '\n' << "address: " <<( int * )( & err ); return 0; }
Oraz volch.cpp: #include <std> int main( void ) { int * addr = NULL; int adres = 0; cout << "Podaj adres komórki do zmiany:\n"; scanf( "%x", & adres ); addr =( int * ) adres; cout << "Na jaką wartość zamienić?"; int worth; cin >> worth; * addr = worth; cout << * addr << ".\n"; return 0; }
Oto moje kroki: 1. Uruchomiłem volcr. 2. Uruchomiłem volch. 3. Wpisałem adres zmiennej err do volch'a. 4. Wpisałem 56. 5. Wywaliło mi Naruszenie ochrony pamięci. // EDIT: Plik std to mój plik dołączający wszystkie standardowe nagłówki. |
|
Gibas11 |
» 2016-02-12 19:55:43 |
|
Elaine |
» 2016-02-12 20:25:56 Jeżeli używasz Linuksa (na windowsie chyba nie ma komunikatów tego typu a w każdym razie ja nigdy nie widziałem), poczytaj o ptrace. |
Faktycznie, Windows nie ma nic w stylu ptrace — ptrace to zabawka w porównaniu do mechanizmów debugowania, które oferuje Windows. |
|
Gibas11 |
» 2016-02-12 20:31:20 Ptrace jest prostym narzędziem do szybkiej realizacji prostych zadań gdzie nie trzeba się bawić z ogromnymi API. Żalisz się, że nie ma go na windzie czy coś innego? |
|
« 1 » |