Partager via


Avertissement C6054

La chaîne 'variable' peut ne pas être terminée par zéro.

Notes

Cet avertissement indique qu’une fonction qui nécessite une chaîne terminée par zéro a été passée à une chaîne non terminée par zéro. Une fonction qui s’attend à ce qu’une chaîne terminée par zéro puisse rechercher le zéro au-delà de la fin de la mémoire tampon. Ce défaut peut entraîner une erreur de dépassement de mémoire tampon exploitable ou un blocage. Le programme doit s’assurer que la chaîne passée se termine par un zéro.

Nom de l’analyse du code : MISSING_ZERO_TERMINATION2

Exemple

Le code suivant génère cet avertissement :

// 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
}

Pour corriger cet avertissement, arrêt wcArray null avant d’appeler la fonction func() , comme indiqué dans l’exemple de code suivant :

// 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
}

Voir aussi