Compartilhar via


C6388

Aviso C6388: <argumento> não pode ser <valor>: isso não adere à especificação para a função <nome da função de>: Linhas: x, y

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

Exemplo

O código C++ a seguir gera este aviso, pois DoSomething espera um valor nulo, mas um valor potencialmente não nulo pode ser passado:

#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:

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

Observe que o uso de malloc e free tem muitas armadilhas em termos de vazamentos de memória e exceções.Para evitar esses tipos de vazamentos e problemas de exceção no geral, use os mecanismos que são fornecidos pela STL (Biblioteca de Modelos Padrão) do C++.Incluem shared_ptr, unique_ptr e vector.Para obter mais informações, consulte Ponteiros inteligentes (C++ moderno) e Referência da Biblioteca Padrão C++.