Avoiding 'Buffer Overrun' C6386 warning
-
26-09-2019 - |
Question
In my code, I am using an array xyz
of 10 objects. When I am trying to access an element of the array using an unsigned int index like this: xyz[level]
, I get 'Buffer overrun' warning. Logically, I am pretty sure that level won't exceed 10. How to avoid this warning?
Solution
I'm probably teaching my grandmother to suck eggs here, but do remember that "level won't exceed 10" is wrong for an array of size 10:
char a[10];
a[10] = '\0'; // Bug, and "Buffer Overrun" warning.
OTHER TIPS
Are you really sure? I never got this warning until now. So, double check.
Anyway, you can use the
#pragma warning( disable: 6386 )
preprocessor directive. I usually push and pop this to the "pragma stack"
#pragma warning( push )
#pragma warning( disable : 6386 )
// Some code
#pragma warning( pop )
as advised here.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow