Чи безпечно strlen ()?
2024Стрлен є небезпечно дзвонити! Якщо ви точно не знаєте, що рядок завершується нульовим значенням… Чи всі функції, які ви використовуєте, гарантовано повернуть нульовий-
? char * strcpy(char * dst, const char * src);
Незакінчений рядок strlen() може викликати помилку сегмента. Іншими словами, незавершений рядок у C/C++ — це бомба сповільненої дії, яка просто чекає, щоб знищити код.
Застаріла функція: strlen(): передача null параметру #1 ($string) типу string застаріло в Drupal\Component\Utility\Unicode::validateUtf8() (рядок 395 core/lib/Drupal/Component/Utility/Unicode.php).
У мові програмування C функція strlen() використовується для обчислити довжину даного рядка або масиву символів, за винятком символу NULL ('\0'), який позначає кінець рядка. Це вбудована функція, визначена в рядку.
У контексті C++: у C++ вам не потрібні жодні з них як такі. strlen() у рядках стилю C можна замінити на C++ std::strings. sizeof() у C як аргумент для таких функцій, як malloc(), memcpy() або memset(), можна замінити на C++ (використовуйте new, std::copy() і std::fill() або конструктори).
Стрлен є небезпечно дзвонити! Якщо ви точно не знаєте, що рядок завершується нульовим значенням… Чи всі функції, які ви використовуєте, гарантовано повертають рядок із завершальним нульовим значенням? char * strcpy(char * dst, const char * src);
strlen буде викликано 1001 разів і кожного разу повторюватиме 1000 символів. тобто більше мільйона марнотрачених ітерацій. Якщо виклик tolower і присвоєння займають еквівалент 10 ітерацій, ми можемо підрахувати, що операція триватиме в сто разів довше, ніж це було б, якби було написано правильно.