Avviso C6388
'argument' potrebbe non essere 'value': questo non rispetta la specifica per la funzione 'function-name': Lines: x, y
Osservazioni:
Questo avviso indica che viene usato un valore imprevisto nel contesto specificato. Questo avviso viene in genere segnalato per i valori passati come argomenti a una funzione che non lo prevede.
Nome dell'analisi del codice: INVALID_PARAM_VALUE_2
Esempio
Il codice seguente genera l'avviso C6388 perché DoSomething
prevede un valore Null, ma potrebbe essere passato un valore potenzialmente non Null:
// C6388_warning.cpp
#include <string.h>
#include <malloc.h>
#include <sal.h>
void DoSomething( _Pre_ _Null_ void* pReserved );
void f()
{
void* p = malloc( 10 );
DoSomething( p ); // Warning C6388
// code...
free(p);
}
Per correggere questo avviso, usare il codice di esempio seguente:
// C6388_no_warning.cpp
#include <string.h>
#include <malloc.h>
#include <sal.h>
void DoSomething( _Pre_ _Null_ void* pReserved );
void f()
{
void* p = malloc( 10 );
if (!p)
{
DoSomething( p );
}
else
{
// code...
free(p);
}
}
L'uso di malloc
e free
presenta molte insidie in termini di perdite di memoria ed eccezioni. Per evitare completamente questi tipi di perdite ed eccezioni, usare i meccanismi forniti dalla libreria standard C++ (STL). Sono inclusi shared_ptr
i contenitori , e , unique_ptr
ad esempio vector
. Per altre informazioni, vedere Puntatori intelligenti e libreria standard C++.