Avertissement C6388

'argument' peut ne pas être 'value' : cela ne respecte pas la spécification de la fonction 'function-name' : Lines : x, y

Notes

Cet avertissement indique qu’une valeur inattendue est utilisée dans le contexte spécifié. Cet avertissement est généralement signalé pour les valeurs passées en tant qu’arguments à une fonction qui ne l’attend pas.

Nom de l’analyse du code : INVALID_PARAM_VALUE_2

Exemple

Le code suivant génère l’avertissement C6388, car DoSomething attend une valeur Null, mais une valeur potentiellement non null peut être passée :

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

Pour corriger cet avertissement, utilisez l’exemple de code suivant :

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

L’utilisation et présente de nombreux pièges en termes de mallocfree fuites de mémoire et d’exceptions. Pour éviter tous ces types de fuites et de problèmes d’exception, utilisez les mécanismes fournis par la bibliothèque standard C++ (STL). Ceux-ci incluent shared_ptr, unique_ptret des conteneurs tels que vector. Pour plus d’informations, consultez Les pointeurs intelligents et la bibliothèque standard C++.