Предупреждение C6054
Строка "переменная" не может быть завершена с нуля.
Замечания
Это предупреждение указывает на то, что функция, требующая отсчитываемой от нуля строки, была передана ненулевая строка. Функция, предполагающая нулевое завершение строки, может искать ноль за пределами буфера. Этот дефект может привести к ошибке переполнения буфера эксплойтов или сбою. Программа должна убедиться, что строка, передаваемая в конце, заканчивается нулем.
Имя анализа кода: MISSING_ZERO_TERMINATION2
Пример
Следующий код создает это предупреждение:
// Warning C6054_bad.cpp
// Compile using: cl /W4 /EHsc /c /analyze C6054_bad.cpp
#include <sal.h>
void func( _In_z_ wchar_t* wszStr );
void g ( )
{
wchar_t wcArray[200] = { 'h', 'e', 'l', 'l', 'o' };
func(wcArray); // Warning C6054
}
Чтобы исправить это предупреждение, прервать wcArray
значение NULL перед вызовом функции func()
, как показано в следующем примере кода:
// C6054_good.cpp
// Compile using: cl /W4 /EHsc /c /analyze C6054_good.cpp
#include <sal.h>
void func( _In_z_ wchar_t* wszStr );
void g ( )
{
wchar_t wcArray[200] = { 'h', 'e', 'l', 'l', 'o', '\0' };
func(wcArray); // OK
}
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по