C6309
avertissement C6309 : l'argument <numéro> est nul : il ne correspond pas à la spécification de la fonction <fonction>
Ce message indique que le code passe un paramètre NULL inattendu comme argument à l'API spécifiée. Le passage d'un paramètre null à une fonction qui attend un paramètre non null peut générer une exception non gérée.
Exemple
Le code suivant génère les avertissements 6309 et 6387 :
#include <codeanalysis/sourceannotations.h>
using namespace vc_attributes;
void f([Pre(Null=No)] void*);
[returnvalue:Post(Null=Yes)] void* g();
void main()
{
f(g()); // 6309 and 6387
}
Pour corriger les deux avertissements, utilisez le code suivant :
#include <codeanalysis/sourceannotations.h>
using namespace vc_attributes;
void f([Pre(Null=No)] void*);
[returnvalue:Post(Null=No)] void* g(); // pointer not null
void main()
{
f(g());
}