Condividi tramite


C6388

avviso C6388: <argomento> non può essere <valore>:questa condizione non soddisfa la specifica della funzione <nome funzione>: righe: x, y

L'avviso indica che nel contesto specificato è stato utilizzato un valore imprevisto.Viene solitamente riportato per valori passati come argomenti a una funzione che non lo prevede.

Esempio

Nel codice C++ seguente l'avviso viene generato perché DoSomething prevede un valore Null ma potrebbe essere stato passato un valore potenzialmente diverso da null:

#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 risolvere il problema, utilizzare il seguente codice di esempio:

#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);
    }
}

Si noti che l'utilizzo di malloc e free ha molti problemi in termini di perdite di memoria ed eccezioni.Per evitare interamente questi tipi di problemi di perdite ed eccezioni, utilizzare i meccanismi forniti dalla libreria STL (Standard Template Library) di C++.Questi comprendono shared_ptr, unique_ptr e vector.Per ulteriori informazioni, vedere Puntatori intelligenti (C++ moderno) e Riferimento per la libreria standard C++.