Upozornění C6388
'argument' nemusí být 'value': To neodpovídá specifikaci funkce 'function-name': Lines: x, y
Poznámky
Toto upozornění označuje, že se v zadaném kontextu používá neočekávaná hodnota. Toto upozornění se obvykle hlásí pro hodnoty předané jako argumenty funkci, která ji neočekává.
Název analýzy kódu: INVALID_PARAM_VALUE_2
Příklad
Následující kód vygeneruje upozornění C6388, protože DoSomething
očekává hodnotu null, ale potenciálně nenulová hodnota může být předána:
// 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);
}
Pokud chcete toto upozornění opravit, použijte následující ukázkový kód:
// 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);
}
}
Použití malloc
a free
má mnoho nástrah z hlediska nevracení paměti a výjimek. Pokud se chcete těmto druhům problémů s úniky a výjimkám vyhnout úplně, použijte mechanismy, které poskytuje standardní knihovna C++ (STL). Patří mezi ně shared_ptr
, unique_ptr
a kontejnery, například vector
. Další informace naleznete v tématu Inteligentní ukazatele a standardní knihovna jazyka C++.