警告 C6054
文字列 'variable' は 0 で終わる場合があります。
解説
この警告は、0 で終わる文字列を必要とする関数に、0 で終わらない文字列が渡されたことを示します。 0 で終わる文字列を想定している関数は、バッファーの末尾を越えて 0 を検索する可能性があります。 この欠陥により、悪用される可能性があるバッファー オーバーランまたはクラッシュが発生する可能性があります。 プログラムは、渡された文字列の末尾が 0 であることを確認する必要があります。
コード分析名: 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
}
この警告を解決するには、次のサンプル コードに示すように、関数 func()
を呼び出す前に wcArray
を null で終了します。
// 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 の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示