Ustawienie całego bufora na znaki NUL to "obrona w głębi". Taka obrona obejmuje błąd popełniony gdzie indziej w kodzie źródłowym, być może przez innego programistę. W tym przypadku pomijany błąd polegałby na skopiowaniu ciągu pasującego do bufora, ale nie skopiowaniu bajtu kończącego NUL. Bufor już-zerowy zapewniłby zakończenie NUL-ów dla tej błędnej kopii napisów do "użycia". Programiści różnią się mądrością "Obrona w głębokości", ponieważ takie kodowanie może maskować błędy programistyczne, które mogą następnie ulegać zahartowaniu w kodzie źródłowym - naprawiane tylko długo po ich wprowadzeniu.
W mojej osobistej opinii ustawienie bufora dla wszystkich postaci NUL, takich jak ta, jako "obrona w głębi" jest ogromnym marnotrawstwem. Bardziej sensowny byłby tylko NUL, ostatni bajt. Następnie pojawiłyby się błędy, ale ciągi zostałyby ostatecznie zakończone. Gdy zaczniesz iść tą ścieżką myśli, "obrona w głąb" będzie miała więcej sensu, jeśli bufor zostanie uczyniony dwoma słowami maszynowymi dłuższymi, a te słowa były wyzerowane, a możliwa wartość kanarka mogłaby zgłosić przekroczenie bufor i ...
Albo możesz po prostu nie przekroczyć buforów i napisać swój program tak, aby załamał się tak szybko, jak to możliwe, jeśli to zrobisz. To właśnie lubię robić.
Nie zgadzam się. Bardziej prawdopodobne jest ukrywanie błędów w logice, która nagle pojawi się, gdy ktoś utrzymujący kod później zdecyduje "hej, usuńmy wszystkie te niepotrzebne memy!" –