C6388C6388

Advertencia C6388: <argumento > no puede ser <valor >: esto no se adhiere a la especificación de la función <nombre de función >: líneas: x, ywarning C6388: <argument> may not be <value>: this does not adhere to the specification for the function <function name>: Lines: x, y

Esta advertencia indica que se utiliza un valor inesperado en el contexto especificado.This warning indicates that an unexpected value is being used in the specified context. Se suele mostrar para valores pasados como argumentos a una función que no lo espera.This is typically reported for values passed as arguments to a function that does not expect it.

EjemploExample

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:The following C++ code generates this warning because DoSomething expects a null value but a potentially non-null value might be passed:


#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:To correct this warning, use the following sample code:


#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.Note that the use of malloc and free have many pitfalls in terms of memory leaks and exceptions. 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++.To avoid these kinds of leaks and exception problems altogether, use the mechanisms that are provided by the C++ Standard Template Library (STL). Puede tratarse de shared_ptr, unique_ptr, y vector.These include shared_ptr, unique_ptr, and vector. Para obtener más información, consulte punteros inteligentes y biblioteca estándar de C++.For more information, see Smart Pointers and C++ Standard Library.