Sdílet prostřednictvím


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_ptra kontejnery, například vector. Další informace naleznete v tématu Inteligentní ukazatele a standardní knihovna jazyka C++.