C6388
avertissement C6388 : <argument> ne peut pas être <valeur> : ceci n'est pas conforme à la spécification de la fonction <NomFonction>. Lignes : x, y
Cet avertissement indique qu'une valeur inattendue est utilisée dans le contexte spécifié.Il s'affiche généralement pour les valeurs passées comme arguments à une fonction qui ne s'y attend pas.
Exemple
Le code C++ suivant génère cet avertissement car DoSomething attend une valeur null, mais une valeur potentiellement non null peut être passée :
#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);
}
Pour corriger cet avertissement, utilisez l'exemple de code suivant :
#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);
}
}
Vous pouvez remarquer que l'utilisation de malloc et free présente de nombreux pièges en terme de fuites de mémoire et d'exceptions.Pour éviter complètement ce genre de problème de fuites et d'exception, utilisez les mécanismes fournis par la bibliothèque de modèles standard (STL) C++.Ceux-ci incluent shared_ptr, unique_ptr, et vector.Pour plus d’informations, consultez Pointeurs intelligents (Modern C++) et Référence de bibliothèque standard C++.