Установка всего буфера в NUL-символы является «глубокой защитой». Такая защита скрывает ошибку, допущенную в другом месте исходного кода, возможно, другим программистом. В этом случае ошибкой, за которой следует следить, будет копирование строки, которая помещается в буфер, но не копирование завершающего байта NUL. Уже нулевой буфер будет предоставлять завершающие NUL для этой ошибочной копии строки для «использования». Программисты расходятся во мнении «Глубокая защита», потому что такое кодирование может маскировать ошибки программирования, которые затем могут накапливаться в исходном коде - исправляются только после их появления.
По моему личному мнению, установка буфера для всех символов NUL, таких как «глубокая защита», является огромной тратой. Было бы больше смысла только в NUL последний байт. Тогда ошибки будут видны, но строки в конечном итоге будут прерваны. Как только вы начнете идти по этому пути мышления, «глубокая защита» будет иметь больше смысла, если в буфере будут сделаны два машинных слова длиннее, и эти слова будут обнулены, и, возможно, значение канарейки может сообщить о переполнении буфер и ....
Или вы можете просто не переполнять буферы и написать свою программу так, чтобы она вылетала как можно быстрее, если вы это сделаете. Это то, что я люблю делать.