V643. Unusual pointer arithmetic. The value of the 'char' type is being added to the string pointer.


Анализатор обнаружил потенциальную ошибку, связанную c некорректным прибавлением символьной константы к указателю на строковый литерал.

Как правило, такая ошибка возникает в случае попытки объединения строкового литерала с символом.

Рассмотрим простейший пример некорректного кода:

std::string S = "abcd" + 'x';

Ожидалось, что будет получена строка "abcdx", однако в данном случае к указателю на строку "abcd" будет прибавлено значение 120. Это гарантировано приведет к выходу за границу строкового литерала. Для предотвращения такой ситуации, следует избегать подобных арифметических операций со строковыми и символьными переменными.

Корректный вариант кода:

std::string S = std::string("abcd") + 'x';

Согласно Common Weakness Enumeration, потенциальные ошибки, найденные с помощью этой диагностики, классифицируются как CWE-480.

Взгляните на примеры ошибок, обнаруженных с помощью диагностики V643.


Найденные ошибки

Проверено проектов
344
Собрано ошибок
12 970

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;