Kiedyś nie mieliśmy ochrony pamięci i całego tego cholernego biznesu! Użyliśmy printf, aby określić, gdzie jesteśmy w programie, i podobało nam się !
Choć z całą powagą, zwykle oznaczało to, że byliśmy bardziej ostrożni. Tam, gdzie nazywa się malloc, gdzieś w programie musiał być darmowy, a takie sprawdzanie było rygorystyczne, ponieważ w przypadku problemu, jak wyraźnie zauważyłeś, błędy segmentacji nie są pomocnymi błędami.
W przypadku takich błędów najlepiej jest spróbować zrozumieć, kiedy występują takie błędy segmentacji (za pomocą printf) i, patrząc na kod, ustalić, dlaczego dostęp do pamięci w tym momencie nie był prawidłowy i stamtąd działać wstecz.
Zasadniczo to samo dzieje się dzisiaj, z wyjątkiem tego, że używamy debugerów do ustalenia, kiedy wystąpią błędy, ale nadal musisz zrozumieć, dlaczego tak się stało, i nie zawsze jest to tak proste, jak znalezienie linii, w której wystąpił błąd. Błędy powodują błędy, takie jak reakcja łańcuchowa, a jeśli byłeś programistą C w tamtych czasach, spędziłeś 20% czasu na kodowaniu, a resztę czasu wyciągałeś włosy, naprawiając błędy.