Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais
Nous recommandons d’utiliser Visual Studio 2017

Avertissement du compilateur (niveau 3) C4748

/GS ne peut pas protéger les paramètres et les variables locales contre le dépassement de mémoire tampon locale, car les optimisations sont désactivées dans la fonction

/GS (Vérification de la sécurité de la mémoire tampon) , qui est activé par défaut, ne peut pas protéger les paramètres et les variables locales contre un dépassement de mémoire tampon locale dans une fonction à moins que des optimisations soient activées dans la fonction.

Le compilateur désactive les optimisations si une fonction a un code d'assembly inline qui contient un flux d'instructions de contrôle (jmp ou jcc, par exemple).

Laissez les optimisations remédier à cet avertissement et autoriser /GS à protéger les paramètres et mes variables locales contre un dépassement de mémoire tampon locale.

L'exemple suivant génère l'erreur C4748 :

// C4748.cpp
// compile with: /O2 /W3
#include <string.h>
#include <stdlib.h>

#pragma optimize("", off)
void f(const char *str) {  // C4748 warning
   char buf[100];
   strcpy_s(buf, _countof(buf), str);
}
#pragma optimize("", on)

int main() {
   f("aa");
}
Afficher: