Analyse de code pour les avertissements C/C++

Mise à jour : novembre 2007

Cette section répertorie les avertissements d'analyse du code C/C++ de la plage C6000 à C6999.

Dans cette section

Numéro d'avertissement

Description

C6001

avertissement C6001 : utilisation de la mémoire non initialisée <variable>

C6011

avertissement C6011 : suppression de la référence du pointeur NULL <nom>

C6029

avertissement C6029 : dépassement de mémoire tampon possible lors de l'appel à <fonction> : utilisation de la valeur non vérifiée

C6031

avertissement C6031 : valeur de retour ignorée : <fonction> peut retourner une valeur inattendue

C6053

avertissement C6053 : l'appel à <fonction> peut ne pas terminer la chaîne <variable> par zéro

C6054

avertissement C6054 : la chaîne <variable> peut ne pas se terminer par zéro

C6057

avertissement C6057 : dépassement de mémoire tampon lié au nombre de caractères/nombre d'octets incompatible dans l'appel à <fonction>

C6059

avertissement C6059 : Paramètre de longueur incorrect dans l'appel à <fonction>. Passez le nombre de caractères restants, pas la taille de mémoire tampon de < variable >

C6063

avertissement C6063 : argument de chaîne manquant pour <fonction> correspondant au spécificateur de conversion <numéro>

C6064

avertissement C6064 : argument entier manquant pour <fonction> correspondant au spécificateur de conversion <numéro>

C6066

avertissement C6066 : élément non pointeur passé en tant que paramètre <numéro> lorsque le pointeur est requis dans l'appel à <fonction>

C6067

avertissement C6067 : paramètre <numéro> dans l'appel à <fonction> doit être l'adresse de la chaîne

C6200

avertissement C6200 : l'index <nom> est en dehors de la plage d'index valide <min> à <max> pour la mémoire tampon <variable> non allouée

C6201

avertissement C6201 : dépassement de mémoire tampon de <variable> (sans doute allouée par la pile) : l'index <nom> est en dehors de la plage d'index valide <min> à <max>

C6202

avertissement C6202 : dépassement de mémoire tampon de <variable> (sans doute allouée par la pile), lors de l'appel à <fonction> : la longueur <taille> dépasse la taille <max> du tampon

C6203

avertissement C6203 : dépassement de mémoire tampon <variable> non allouée par la pile lors de l'appel à <fonction> : la longueur <taille> dépasse la taille du tampon

C6204

avertissement C6204 : dépassement de mémoire tampon possible lors de l'appel à <fonction> : utilisation du paramètre non vérifié <variable>

C6209

avertissement C6209 : lors de l'utilisation de 'sizeof<variable1>' en tant que paramètre <numéro> dans l'appel à <fonction>, où <variable2> peut être un tableau de caractères larges, avez-vous utilisé le nombre de caractères plutôt que le nombre d'octets ?

C6211

avertissement C6211 : mémoire <pointeur> manquante liée à une exception. Si possible, utilisez un bloc catch local pour nettoyer la mémoire

C6214

avertissement C6214 : cast entre types d'entiers sémantiquement différents : HRESULT vers un type Boolean

C6215

avertissement C6215 : cast entre types d'entiers sémantiquement différents : type Boolean vers HRESULT

C6216

avertissement C6216 : cast inséré par le compilateur entre types intégraux sémantiquement différents : type Boolean vers HRESULT

C6217

avertissement C6217 : cast implicite entre types d'entiers sémantiquement différents : test de HRESULT avec 'not'. Si possible, utilisez plutôt la macro SUCCEEDED ou FAILED.

C6219

avertissement C6219 : cast implicite entre types d'entiers sémantiquement différents : comparaison de HRESULT à 1 ou TRUE. Si possible, utilisez plutôt la macro SUCCEEDED ou FAILED.

C6220

avertissement C6220 - cast implicite entre types d'entiers sémantiquement différents : comparaison de HRESULT à -1. Si possible, utilisez la macro SUCCEEDED ou FAILED à la place

C6221

avertissement C6221 : cast implicite entre types d'entiers sémantiquement différents : comparaison de HRESULT à un entier. Si possible, utilisez plutôt la macro SUCCEEDED ou FAILED.

C6225

avertissement C6225 : cast implicite entre types d'entiers sémantiquement différents : assignation de 1 ou TRUE à HRESULT. Si possible, utilisez S_FALSE à la place.

C6226

avertissement C6226 : cast implicite entre types d'entiers sémantiquement différents : assignation de -1 à HRESULT. Si possible, utilisez E_FAIL à la place.

C6230

avertissement C6230 : cast implicite entre types d'entiers sémantiquement différents : utilisation de HRESULT dans un contexte Boolean

C6235

avertissement C6235 : (<constante non nulle> || <expression>) est toujours une constante non nulle

C6236

avertissement C6236 : (<expression> || <constante non nulle>) est toujours une constante non nulle

C6237

avertissement C6237 : (<zéro> && <expression>) est toujours zéro. <expression> n'est jamais évalué et peut avoir des effets secondaires

C6239

avertissement C6239 : (<constante non nulle> && <expression>) correspond toujours au résultat de <expression>. Souhaitiez-vous utiliser l'opérateur de bits AND ?

C6240

avertissement C6240 : (<expression> && <constante non nulle>) correspond toujours au résultat de <expression>. Souhaitiez-vous utiliser l'opérateur de bits AND ?

C6242

avertissement C6242 : Un saut hors de ce bloc try provoque un déroulement local et entraîne de sérieuses pertes en termes de performances

C6244

avertissement C6244 : la déclaration locale de <variable> masque la déclaration précédente à la ligne <ligne> de <fichier>

C6246

avertissement C6246 : la déclaration locale de <variable> masque la déclaration du même nom dans la portée externe. Informations supplémentaires : reportez-vous à la déclaration précédente à <emplacement>.

C6248

avertissement C6248 : La définition d'une liste DACL d'un SECURITY_DESCRIPTOR à NULL aboutit à un objet non protégé

C6250

avertissement C6250 : l'appel de <fonction> sans l'indicateur MEM_RELEASE peut libérer de la mémoire mais pas les descripteurs d'adresses virtuelles (VAD) ; cela peut provoquer des fuites dans l'espace d'adressage

C6255

avertissement C6255 : _alloca signale un échec en levant une exception de dépassement de capacité de la pile. Si possible, utilisez _alloca_s à la place.

C6258

avertissement C6258 : l'utilisation de TerminateThread ne permet pas un nettoyage approprié des threads

C6259

avertissement C6259 : impossible d'atteindre le code étiqueté : (<expression> & <constante>) dans un switch-expr ne peut pas prendre la valeur <étiquette-case>

C6260

avertissement C6260 : sizeof * sizeof est quasiment toujours incorrect. Souhaitiez-vous utiliser un nombre de caractères ou d'octets ?

C6262

avertissement C6262 : la fonction utilise <constante> octets de pile : dépasse /analyze:stacksize<constante>. Si possible, déplacez certaines données vers le tas

C6263

avertissement C6263 : utilisation de _alloca dans une boucle : cette opération peut rapidement provoquer un débordement de la pile

C6268

avertissement C6268 : ordre des opérations incorrect : (<TYPE1>)(<TYPE2>)x + y. Parenthèses sans doute manquantes dans (<TYPE1>)((<TYPE2>)x + y)

C6269

avertissement C6269 : ordre des opérations peut-être incorrect : déréférencement ignoré

C6270

avertissement C6270 : argument float manquant dans <fonction> : ajoutez un argument float correspondant au spécificateur de conversion <numéro>

C6271

avertissement C6271 : argument supplémentaire passé à <fonction> : la chaîne de format n'utilise pas le paramètre <numéro>

C6272

avertissement C6272 : valeur non float passée comme argument <numéro> lorsqu'une valeur float est requise dans l'appel à <fonction>

C6273

avertissement 6273 - valeur non entière passée comme paramètre <numéro> lorsqu'une valeur entière est requise dans l'appel à <fonction> : si une valeur de pointeur est passée, utilisez %p

C6274

avertissement C6274 : valeur autre qu'un caractère passée comme paramètre <numéro> lorsqu'un caractère est requis dans l'appel à <fonction>

C6276

avertissement C6276 : cast entre types de chaînes sémantiquement différentes : char * à wchar_t *. L'utilisation d'une chaîne non valide peut engendrer un comportement non défini

C6277

avertissement C6277 : nom d'application NULL avec chemin sans guillemets dans l'appel à <fonction> : un chemin contenant des espaces peut provoquer une faille de sécurité

C6278

avertissement C6278 : <variable> est alloué avec un tableau new [], mais supprimé avec une variable scalaire delete. Aucun destructeur ne sera appelé

C6279

avertissement C6279 : <variable> est alloué avec une variable scalaire new, mais supprimé avec un tableau delete []

C6280

avertissement C6280 : <variable> est alloué avec <fonction>, mais supprimé avec <fonction>

C6281

avertissement 6281 - ordre des opérations incorrect : les opérateurs relationnels ont une priorité plus élevée que les opérateurs de bits

C6282

avertissement C6282 : Opérateur incorrect : assignation d'une constante dans un contexte Boolean. Si possible, utilisez '==' à la place.

C6283

avertissement C6283 : <variable> est alloué avec un tableau new [], mais supprimé avec une variable scalaire delete.

C6284

avertissement C6284 : objet passé comme paramètre '%d' lorsqu'une chaîne est requise dans l'appel à <fonction>.

C6285

avertissement C6285 : (<constante non nulle> || <constante non nulle>) est toujours une constante non nulle. Souhaitiez-vous utiliser l'opérateur de bits AND ?

C6286

avertissement C6286 : (<constante non nulle> || <expression>) est toujours une constante non nulle. <expression> n'est jamais évalué et peut avoir des effets secondaires

C6287

avertissement C6287 : code redondant : les sous-expressions gauche et droite sont identiques

C6288

avertissement C6288 : Opérateur incorrect : l'inclusion mutuelle sur && est toujours égale à zéro. Souhaitiez-vous utiliser || à la place ?

C6289

avertissement C6289 : Opérateur inexact : l'exclusion mutuelle sur || est toujours une constante non nulle. Souhaitiez-vous utiliser && à la place ?

C6290

avertissement C6290 : Opération de bits sur résultat logique : ! bénéficie d'une priorité supérieure à celle de &. Utilisez && ou (! (x & y)) à la place

C6291

avertissement C6291 : Opération de bits sur résultat logique : ! bénéficie d'une priorité supérieure à celle de |. Utilisez || ou (!(x | y)) à la place

C6292

avertissement C6292 : boucle mal définie : calcule à partir de la valeur maximale

C6293

avertissement C6293 : Boucle mal définie : calcule à rebours à partir de la valeur minimale

C6294

avertissement C6294 : Boucle mal définie : la condition initiale ne satisfait pas les tests. Le corps de la boucle n'est pas exécuté

C6295

avertissement C6295 : Boucle mal définie : les valeurs <variable> figurent toujours dans une plage de "min" à "max". La boucle s'exécute à l'infini

C6296

avertissement C6296 : Boucle mal définie. Le corps de la boucle n'a été exécuté qu'une seule fois

C6297

avertissement C6297 : Dépassement arithmétique : la valeur 32 bits est décalée, puis définie en cast à une valeur 64 bits. Le résultat peut être différent de la valeur attendue

C6298

avertissement C6298 : utilisation d'une chaîne en lecture seule <pointeur> comme argument de chaîne accessible en écriture. Cette opération peut inciter à des tentatives d'écriture dans la mémoire statique en lecture seule et provoquer des pannes aléatoires

C6299

avertissement C6299 : la comparaison explicite d'un champ de bits avec un type Boolean provoque des résultats inattendus

C6302

avertissement C6299 : la comparaison explicite d'un champ de bits avec un type Boolean provoque des résultats inattendus

C6303

avertissement C6303 : incompatibilité de chaîne de format : une chaîne de caractères est passée comme paramètre <numéro> lorsqu'une chaîne à caractères larges est requise dans l'appel à <fonction>

C6305

avertissement C6305 : incompatibilité possible entre les quantités sizeof et countof

C6306

avertissement C6306 : appel à <fonction> incorrect : si possible, utilisez <fonction> qui accepte un type va_list comme argument

C6308

avertissement C6308 : 'realloc' peut retourner un pointeur Null : l'assignation d'un pointeur Null à <variable> passé comme argument à 'realloc' peut entraîner une fuite du bloc de mémoire d'origine

C6309

avertissement C6309 : l'argument <number> est nul: il ne correspond pas à la spécification de la fonction <function>

C6310

avertissement C6310 : une constante non autorisée dans le filtre d'exception peut provoquer un comportement inattendu

C6312

avertissement C6312 : Boucle infinie possible : utilisation de la constante EXCEPTION_CONTINUE_EXECUTION dans l'expression de filtre d'exception d'une instruction try-except

C6313

avertissement C6313 : Opérateur incorrect : impossible de tester l'indicateur de valeur zéro avec l'opérateur de bits AND. Procédez à un test d'égalité pour vérifier la présence d'indicateurs de valeur zéro

C6314

avertissement C6314 : Ordre des opérations incorrect : l'opérateur de bits OR a une priorité plus élevée que l'opérateur d'expression conditionnelle. Ajoutez des parenthèses pour préciser clairement le but recherché.

C6315

avertissement C6315 : Ordre des opérations incorrect : l'opérateur de bits AND a une priorité plus élevée que l'opérateur de bits OR. Ajoutez des parenthèses pour préciser clairement le but recherché.

C6316

avertissement C6316 : Opérateur incorrect : l'expression testée est constante et non nulle. Utilisez l'opérateur de bits AND pour déterminer si les bits sont définis

C6317

avertissement C6317 : opérateur incorrect : l'opérateur NOT logique (!) n'est pas interchangeable avec l'opérateur de complément à 1 (~)

C6318

avertissement C6318 : __try/__except mal défini : utilisation de la constante EXCEPTION_CONTINUE_SEARCH ou d'une autre constante égale à zéro dans l'expression de filtre d'exception. Le code dans le bloc de gestion d'exceptions n'est pas exécuté

C6319

avertissement C6319 : l'utilisation de l'opérateur virgule au sein d'une expression testée empêche la prise en compte de l'argument de gauche lorsqu'il n'a aucun effet secondaire

C6320

avertissement C6320 : l'expression de filtre d'exception correspond à la constante EXCEPTION_EXECUTE_HANDLER. Cela risque de masquer les exceptions qui n'étaient pas destinées à être gérées

C6322

avertissement C6322 : bloc empty _except

C6323

avertissement 6323 - utilisation d'un opérateur arithmétique dans les types Boolean

C6324

avertissement C6324 : utilisation incorrecte possible de <fonction1> : souhaitiez-vous utiliser <fonction2> ?

C6326

avertissement C6326 : comparaison éventuelle d'une constante avec une autre

C6327

avertissement C6327 : dépassement de mémoire tampon possible : SysAllocStringLen copie les caractères <numéro> de la chaîne <variable> sans valider le nombre de caractères à copier. Le code risque de se bloquer

C6328

avertissement C6328 : <type> passé en tant que paramètre <numéro> lorsque <type> est requis dans l'appel à <fonction>

C6331

avertissement C6331 : Paramètre non valide : le passage de MEM_RELEASE et MEM_DECOMMIT en association avec <fonction> n'est pas autorisé. Cela provoque l'échec de cet appel.

C6332

avertissement C6332 : paramètre non valide : le passage de zéro comme paramètre dwFreeType vers <fonction> n'est pas autorisé. Cet appel va échouer.

C6333

avertissement C6333 : Paramètre non valide : le passage de MEM_RELEASE et d'un paramètre dwSize non nul vers <fonction> n'est pas autorisé. Cet appel va échouer.

C6334

avertissement C6334 : l'application de l'opérateur sizeof à une expression avec opérateur peut provoquer des résultats inattendus

C6335

avertissement C6335 : handle d'informations de processus manquant <NomHandle>

C6336

avertissement C6336 : l'opérateur arithmétique a priorité sur l'opérateur de question. Utilisez des parenthèses pour clairement définir le but recherché

C6381

avertissement C6381 : L'API de fermeture <fonction> exige un dwReason ou lpMessage valide

C6383

avertissement C6383 : dépassement de mémoire tampon suite à la conversion d'un nombre d'éléments en nombre d'octets : un nombre d'éléments est attendu pour le paramètre <numéro> dans l'appel à <fonction>

C6384

avertissement C6384 : division d'un pointeur avec opérateur sizeof par une autre valeur

C6385

avertissement C6385 : données non valides : accès à <NomMémTampon>, en cours, la taille lisible est <taille1> octets, mais <taille2> octets peuvent être lus : Lignes : x, y

C6386

avertissement C6386 : dépassement de mémoire tampon : accès à <NomMémoireTampon> en cours, la taille accessible en écriture est <taille1> octets, mais <taille2> octets peuvent être écrits. Lignes : x, y

C6387

avertissement C6387 : <argument> peut être <valeur> : ceci n'est pas conforme à la spécification de la fonction <NomFonction> : Lignes : x, y

C6388

avertissement C6388 : <argument> ne peut pas être <valeur> : ceci n'est pas conforme à la spécification de la fonction <NomFonction> : Lignes : x, y

C6400

avertissement C6400 : Utilisation de <NomFonction> en vue d'effectuer une comparaison ne tenant pas compte de la casse avec la chaîne constante <NomChaîne>. Donne des résultats inattendus avec les paramètres régionaux autres que l'anglais

C6401

avertissement C6401 : Utilisation de <NomFonction> dans les paramètres régionaux par défaut en vue d'effectuer une comparaison ne tenant pas compte de la casse avec la chaîne constante <NomChaîne>. Donne des résultats inattendus avec les paramètres régionaux autres que l'anglais

C6500

avertissement C6500 : annotation non valide : la valeur de la propriété <nom> n'est pas valide

C6501

avertissement C6501 : conflit d'annotation : la propriété <nom> est en conflit avec une propriété précédemment spécifiée

C6503

avertissement C6503 : conflit d'annotation : les références peuvent ne pas être marquées Null=Yes ou Null=Maybe

C6504

avertissement C6504 : annotation non valide : la propriété peut uniquement être employée dans des valeurs de type pointeur, pointeur vers membre ou tableau

C6505

avertissement C6505 : annotation non valide : la propriété MustCheck ne peut pas être utilisée dans des valeurs de type void

C6506

avertissement C6506 : annotation non valide : la propriété <nom> peut uniquement être employée dans des valeurs de type pointeur ou tableau

C6507

avertissement C6507 : conflit d'annotation : la propriété Null définie sur Deref=0 dans une condition préalable doit être un sous-ensemble de la propriété Null dans la précondition

C6508

avertissement C6508 : annotation non valide : l'accès en écriture n'est pas autorisé dans les valeurs constantes

C6509

avertissement C6509 : annotation non valide : 'return' ne peut pas être référencé à partir d'une précondition

C6510

avertissement C6510 : annotation non valide : la propriété NullTerminated peut uniquement être employée dans des valeurs de type pointeur ou tableau

C6511

avertissement C6511 : annotation non valide : la propriété MustCheck doit avoir comme valeur Yes ou No

C6512

avertissement C6512 : annotation non valide : la propriété Null doit être Maybe si la propriété Valid a la valeur No

C6513

avertissement C6513 : annotation non valide : ElementSizeConst exige des propriétés de taille supplémentaires

C6514

avertissement C6514 : annotation non valide : la valeur de la propriété <nom> dépasse la taille du tableau

C6515

avertissement C6515 - annotation non valide : la propriété <nom> peut uniquement être utilisée dans des valeurs de type pointeur

C6516

avertissement C6516 : annotation non valide : aucune propriété n'est spécifiée pour l'attribut <nom>

C6517

avertissement C6517 : conflit d'annotation: ValidElementsConst et ValidBytesConst peuvent ne pas être spécifiées sur les buffers qui ne sont pas lisibles.

C6518

avertissement C6518 : conflit d'annotation : WriteableElementsConst et WriteableBytesConst peuvent ne pas être spécifiées sur les buffers qui ne sont inscriptibles

C6521

avertissement C6521 : spécification de taille non valide : l'opérateur * peut uniquement être appliqué à des types de pointeurs

C6522

avertissement C6522 : spécification de taille non valide : l'expression doit être de type intégral

C6523

avertissement C6523 : spécification de taille non valide : le paramètre <nom> est introuvable

C6525

avertissement C6525 : spécification de taille non valide : la valeur de la propriété n'est peut-être pas valide

C6526

avertissement C6526 - spécification de taille non valide : l'expression doit être de type pointeur ou tableau

C6530

avertissement 6530 : style de chaîne de format non reconnu <nom>

C6535

avertissement C6535 : La taille de la mémoire tampon ne peut pas être <n>, soit supérieure à max(size_t)

Voir aussi

Concepts

Indications pour l'écriture de code sécurisé

Autres ressources

Détection et correction des erreurs de code C/C++