Avviso C6334

sizeof l'operatore applicato a un'espressione con un operatore può produrre risultati imprevisti

Osservazioni:

L'operatore sizeof , se applicato a un'espressione, restituisce la dimensione del tipo dell'espressione risultante.

Nome dell'analisi del codice: SIZEOFEXPR

Esempio

Il codice seguente genera questo avviso. Poiché a - 4 è un'espressione, sizeof restituirà le dimensioni del puntatore risultante, non le dimensioni della struttura trovata in quel puntatore:

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

Per correggere questo avviso, assicurarsi di usare il valore restituito di sizeof, non con l'argomento:

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

Vedi anche

sizeof Operator (Operatore sizeof)