Condividi tramite


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_ptri contenitori , e , unique_ptrad esempio vector. Per altre informazioni, vedere Puntatori intelligenti e libreria standard C++.