Compartir a través de


C6388

Advertencia C6388: <argumento> no puede ser <valor>: no cumple con las especificaciones de la función <nombre función>: Líneas: x, y

Esta advertencia indica que se utiliza un valor inesperado en el contexto especificado.Se suele mostrar para valores pasados como argumentos a una función que no lo espera.

Ejemplo

El código de C++ siguiente genera esta advertencia porque DoSomething espera un valor null pero se podría pasar un valor potencialmente no nulo:

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

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

Tenga en cuenta que el uso de las opciones malloc y free tiene muchos riesgos en cuanto a pérdidas de memoria y excepciones.Para evitar todos estos tipos de problemas de pérdidas de memoria y excepciones, use los mecanismos proporcionados por la Biblioteca de plantillas estándar (STL) de C++.Estos incluyen shared_ptr, unique_ptr y vector.Para obtener más información, vea Punteros inteligentes (C++ moderno) y Referencia de biblioteca estándar de C++.