Die Einstellung des gesamten Puffers auf NUL-Zeichen ist eine "Verteidigung in der Tiefe". Eine solche Verteidigung deckt einen Fehler ab, der anderswo im Quellcode gemacht wurde, vielleicht von einem anderen Programmierer. In diesem Fall würde der Fehler, gegen den geschützt wird, darin bestehen, eine Zeichenfolge zu kopieren, die zwar in den Puffer passt, aber das NUL-Beendigungsbyte nicht kopiert. Der Puffer, der bereits null ist, würde die abschließenden NULs für diese fehlerhafte Zeichenfolge-Kopie zur Verfügung stellen. Programmierer unterscheiden sich in der Weisheit von "Defense in Depth", weil eine solche Kodierung Programmierfehler maskieren kann, die dann im Quellcode eitern - und erst lange nach ihrer Einführung behoben werden.
Meiner Meinung nach ist das Einstellen des Puffers auf alle NUL-Zeichen wie dieses als "Verteidigung in der Tiefe" eine riesige Verschwendung. Es wäre sinnvoller, nur NUL das letzte Byte zu haben. Dann würden Fehler auftreten, aber die Strings würden schließlich beendet werden. Sobald man diesen Gedankengang durchläuft, würde die "Verteidigung in der Tiefe" mehr Sinn ergeben, wenn der Puffer zwei Maschinenwörter länger gemacht hätte, und diese Wörter wurden auf Null gesetzt, und möglicherweise könnte ein kanarischer Wert eine Überschreitung des Wertes anzeigen Puffer und ....
Oder Sie könnten einfach Puffer nicht überlaufen, und schreiben Sie Ihr Programm so, dass es so schnell wie möglich abstürzt, wenn Sie dies tun. Das mache ich gerne.
Ich stimme nicht zu. Es ist wahrscheinlicher, Fehler in der Logik zu verstecken, die plötzlich auftauchen wird, wenn jemand, der den Code beibehält, später entscheidet: "Hey, lass uns all diese nutzlosen Speicher entfernen!" –