Partilhar via


Aviso C6388

'argument' pode não ser 'value': isso não segue a especificação para a função 'function-name': Linhas: x, y

Comentários

Esse aviso indica que um valor inesperado está sendo usado no contexto especificado. Esse aviso normalmente é relatado para valores passados como argumentos para uma função que não o espera.

Nome da análise de código: INVALID_PARAM_VALUE_2

Exemplo

O código a seguir gera o aviso C6388 porque DoSomething espera um valor nulo, mas um valor potencialmente não nulo pode ser passado:

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

Para corrigir esse aviso, use o seguinte código de exemplo:

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

O uso de malloc e free tem muitas armadilhas em termos de vazamentos de memória e exceções. Para evitar por completo esses tipos de problema envolvendo vazamentos e exceções, use os mecanismos fornecidos pela Biblioteca Padrão do C++ (STL). Isso inclui shared_ptr, unique_ptr, e contêineres como vector. Para obter mais informações, confira Ponteiros inteligentes e Biblioteca Padrão do C++.