Partager via


C28741

avertissement C28741 : Mémoire tampon non annotée dans la fonction

Cet avertissement indique qu’une mémoire tampon passée en tant que paramètre de fonction ou retournée par une fonction doit être annotée avec le langage SAL (Microsoft Source Code Annotation Language). Les outils d’analyse statique peuvent utiliser ces annotations pour détecter les dépassements de mémoire tampon.

Actuellement, seuls les tampons de chaînes non constantes sont diagnostiqués avec cet avertissement. Dans l’idéal, toutes les mémoires tampons passées en tant que paramètres de fonction ou retournées par des fonctions doivent être annotées. Les tableaux de wchar_t ou char sont candidats à cet avertissement. Les caractères non signés ne le sont actuellement pas.

Exemple

L’exemple de code suivant génère cet avertissement.

  int foo( LPTSTR buffer, size_t cch );

L’exemple de code suivant évite cet avertissement en utilisant l’annotation SAL _Out_writes_ pour spécifier que la fonction appelée écrit dans la mémoire tampon et que la mémoire tampon ne peut pas être NULL. L’annotation indique que la mémoire tampon est d’éléments cch .

    int foo(_Out_writes_(cch) LPTSTR buffer, size_t cch );