Freigeben über


Warnung C6388

"Argument" darf nicht "Wert" sein: Dies entspricht nicht der Spezifikation für die Funktion "Funktionsname": Zeilen: x, y

Hinweise

Diese Warnung gibt an, dass im angegebenen Kontext ein unerwarteter Wert verwendet wird. Diese Warnung wird in der Regel für Werte gemeldet, die als Argumente an eine Funktion übergeben werden, die sie nicht erwartet.

Name der Codeanalyse: INVALID_PARAM_VALUE_2

Beispiel

Der folgende Code generiert die Warnung C6388, da erwartet wird, dass DoSomething ein Nullwert, aber möglicherweise ein Nicht-Null-Wert übergeben wird:

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

So korrigieren Sie die Warnung unter Verwendung des folgenden Beispielcodes

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

Die Verwendung von malloc und free hat viele Fallstricke in Bezug auf Speicherlecks und Ausnahmen. Um diese Arten von Lecks und Ausnahmeproblemen vollständig zu vermeiden, verwenden Sie die Mechanismen, die von der C++-Standardbibliothek (STL) bereitgestellt werden. Dazu gehören shared_ptr, , unique_ptrund Container wie vector. Weitere Informationen finden Sie unter Intelligente Zeiger und C++-Standardbibliothek.