Avertissement C6334

sizeof l’opérateur appliqué à une expression avec un opérateur peut produire des résultats inattendus

Notes

L’opérateur sizeof , lorsqu’il est appliqué à une expression, génère la taille du type de l’expression résultante.

Nom de l’analyse du code : SIZEOFEXPR

Exemple

Le code suivant génère cet avertissement. Étant donné qu’il a - 4 s’agit d’une expression, sizeof retourne la taille du pointeur résultant, et non la taille de la structure trouvée à ce pointeur :

void f( )
{
    size_t x;
    char a[100];
    x = sizeof(a - 4);
    assert(x == 96);  //assert fails since x == sizeof(char*)
}

Pour corriger cet avertissement, vérifiez que vous utilisez la valeur de sizeofretour , et non l’argument à celui-ci :

void f( )
{
    size_t x;
    char a[100];
    x = sizeof(a) - 4;
    assert(x == 96);  //assert succeeds
}

Voir aussi

sizeof, opérateur