Vermeiden ‚Pufferüberlauf‘ C6386 Warnung
-
26-09-2019 - |
Frage
In meinem Code, ich bin mit einem Array xyz
von 10 Objekten. Wenn ich versuche, ein Element des Arrays zuzugreifen einen unsigned int Index wie folgt aus: xyz[level]
, erhalte ich 'Buffer Overrun ' Warnung. Logischerweise bin ich ziemlich sicher, dass Level 10 nicht überschreiten Wie diese Warnung vermeiden?
Lösung
Ich bringe wahrscheinlich meine Großmutter Eier hier zu saugen, aber denken Sie daran, dass „Niveau nicht überschreiten 10“ ist falsch für eine Reihe von Größe 10:
char a[10];
a[10] = '\0'; // Bug, and "Buffer Overrun" warning.
Andere Tipps
Sind Sie wirklich sicher? Ich habe nie diese Warnung bis jetzt. So überprüfen.
Wie auch immer, können Sie die
verwenden#pragma warning( disable: 6386 )
Präprozessordirektive. Ich in der Regel drücken und Pop dies den „Pragma stack“
#pragma warning( push )
#pragma warning( disable : 6386 )
// Some code
#pragma warning( pop )
wie empfohlen hier .
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow