Condividi tramite


Avviso C28183

L'argomento può essere un valore ed è una copia del valore trovato nel puntatore

Questo avviso indica che questo valore è imprevisto nel contesto corrente. Questo avviso viene in genere visualizzato quando un NULL valore viene passato come argomento a una funzione che non lo consente. Il valore è stato effettivamente trovato nella variabile specificata e l'argomento è una copia di tale variabile.

Lo strumento Analisi codice segnala questo avviso al primo punto in cui può determinare definitivamente che il puntatore è NULL o che contiene un valore non valido. Tuttavia, spesso è il caso in cui l'errore possa verificarsi in precedenza nella traccia. In questo caso, lo strumento di analisi del codice darà anche il numero di riga della prima istanza possibile, in genere in una posizione in cui non è stato possibile determinare definitivamente che l'avviso è appropriato. In questi casi, il percorso precedente in cui può verificarsi viene aggiunto al messaggio di avviso. In genere, una modifica del codice deve verificarsi in corrispondenza o prima di tale numero di riga, anziché al punto del report.

Esempio

Nell'esempio seguente, lo strumento di analisi del codice determina che s è NULL nell'istruzione if e il corpo dell'oggetto if viene acquisito. Il puntatore s viene quindi assegnato a t e quindi t viene usato in un modo in cui può verificarsi una NULL dereferenziazione.

#include <windows.h>

int fun2(char *s)
{
    char *t;
    if (s == NULL) {
       //... but s is unchanged
    }

    t = s;

    return lstrlenA(t);
}

Per questo esempio di codice, lo strumento Analisi codice segnala l'avviso seguente:

d:\sample\testfile.cpp(38) : warning C28183: 't' could be '0', and is a copy of the value found in 's':  this does not adhere to the specification for the function 'lstrlenA'.: Lines: 31, 32, 36, 38