Naruszenie ochrony pamięci – zdarzenie wykrywane przez sprzęt, polegające na korzystaniu przez program z pamięci poza zaalokowanym dla niego obszarem.
Zwykle wynika to z błędów, czasem jednak jest to świadome działanie programisty – np. program może zalokować mały stos i nie sprawdzać jego przepełnienia, za to kiedy ono nastąpi – i nastąpi naruszenie ochrony pamięci – przechwycić ten sygnał i rozszerzyć stos. Jest to o wiele bardziej efektywne od ciągłego sprawdzania przepełnienia (co musi następować ogromną liczbę razy), oraz od alokacji dużej ilości pamięci na stos (co marnuje pamięć).
Objawy błędu W systemie Linux w konsoli pojawia się napis „Segmentation fault” opcjonalnie z dodatkowymi informacjami, o ile sygnał SIGSEGV nie zostanie przechwycony przez aplikację.
W systemach Windows aplikacje często w tej sytuacji wyświetlają okno z błędem o treści „EAccess Violation”, „Access Violation” lub informacji o kodzie błędu 0xC0000005. Zdarzają się też przypadki zakończenia aplikacji bez wyświetlenia jakiegokolwiek komunikatu.