Худшее, что может случиться? В итоге (невольно) вы получаете строку, которая не заканчивается NULL, или целое число, которое наследует то, что произошло справа от него после печати в часть буфера. Тем не менее, неопределенные строки могут происходить и другими способами, даже если вы инициализировали буфер.
Редактировать (из комментариев) Конец света также маловероятен, в зависимости от того, что вы делаете.
Либо нежелательно. Однако, если полностью не избегать динамически распределенной памяти, большинство статически распределенных буферов обычно довольно малы, что делает memset()
относительно дешевым. На самом деле, гораздо дешевле, чем большинство звонков на calloc()
для динамических блоков, которые, как правило, больше, чем ~ 2k.
c99 содержит язык, касающийся значений инициализации по умолчанию, однако я не могу согласиться с этим gcc -std=c99
, используя любой тип хранилища.
Тем не менее, так как многие старые компиляторы (и не совсем c99) все еще используются, я предпочитаю просто использовать memset()