Advertencia C6388

'argument' puede no ser 'value': esto no cumple la especificación de la función 'function-name': Lines: x, y

Comentarios

Esta advertencia indica que se utiliza un valor inesperado en el contexto especificado. Normalmente, esta advertencia se notifica para los valores pasados como argumentos a una función que no lo espera.

Nombre del análisis de código: INVALID_PARAM_VALUE_2

Ejemplo

El código siguiente genera la advertencia C6388 porque DoSomething espera un valor NULL, pero se podría pasar un valor potencialmente distinto de NULL:

// 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 corregir esta advertencia, utilice el siguiente código de ejemplo:

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

El uso de malloc y free tiene muchos problemas en términos de fugas de memoria y excepciones. Para evitar estos problemas, se recomienda usar los mecanismos que proporciona la biblioteca estándar de C++ (STL). Entre ellos se incluyen shared_ptrlos contenedores , unique_ptry , como vector. Para más información, consulte los artículos sobre punteros inteligentes y la biblioteca estándar de C++.