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.
Codeanalysename: 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_ptr
und Container wie vector
. Weitere Informationen finden Sie unter Intelligente Zeiger und C++-Standardbibliothek.