Temat: Access violation reading / writing location
Tego typu błąd może pojawić się podczas uruchomienia programu w trybie debugowania (F5 - Start Debugging).
Oznacza on, że próbujemy dostać się (odczytać / zapisać) do obszaru pamięci, do którego dostęp jest zabroniony.
Należy wówczas przyjrzeć się dokładnie kodowi, a najczęstsze powody takiego błędu to na przykład:
- do funkcji typu scanf przekazaliśmy wartość zmiennej, a nie jej adres
- zadeklarowaliśmy tylko wskaźnik na dynamiczny obszar pamięci, ale zapomnieliśmy o zaalokowaniu tego obszaru,
- przechodząc po elementach tablicy wychodzimy zbyt daleko w pamięć (bo np. w pętli for mamy <=, a powinno być <), lub jeżeli odejmujemy jakieś wartości od indeksów tablicy, pojawiają się indeksy ujemne
- pomyliliśmy wysokość tablicy dwuwymiarowej z jej szerokością, zamieniając indeksy lub warunki stopu pętli for miejscami
Nierzadko miejsca powodujące te błędy możemy wytropić dokładnie czytając i eliminując do zera wszystkie ostrzeżenia, jakie zgłasza nam kompilator!