> -- Борис Рюмшин писал(а):
> У сишников в строках проблема не в завершающем нуле, а отсутствии контроля границ массива.
В 0 тоже есть проблема. Когда содержимое строки получают извне, многие забывают проверить, чтобы в содержимом не было 0, так как в этом случае длина строки окажется короче ожидаемой. Такие особенности остро встают при работе над безопасностью приложения. Неправильного поведения программы можно добиться и без порчи памяти.
К слову, если бы проблема была только в отсутствии контроля границ, то её бы и не было вовсе, потому что современные компиляторы Си умеют их контролировать. Для получения такого контроля нужно использовать ключ -fsanitize=address , поддерживаемый и gcc, и clang. По моим наблюдениям для gcc программа замедляется раза в 3, но при включённой оптимизации всё равно работает быстрей эквивалентной программы на Blackbox.