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 de 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_ptr
los contenedores , unique_ptr
y , como vector
. Para más información, consulte los artículos sobre punteros inteligentes y la biblioteca estándar de C++.