避免“缓冲区溢出”C6386 警告
-
26-09-2019 - |
题
在我的代码中,我使用一个数组 xyz
共 10 个对象。当我尝试使用 unsigned int 索引访问数组的元素时,如下所示: xyz[level]
, ,我得到 '缓冲区溢出' 警告。按道理来说,我很确定等级不会超过10级。如何避免这个警告?
解决方案
我可能正在教我的祖母在这里吸鸡蛋,但请记住,对于大小为 10 的数组,“级别不会超过 10”是错误的:
char a[10];
a[10] = '\0'; // Bug, and "Buffer Overrun" warning.
其他提示
你是 真的 当然?直到现在我才收到这个警告。所以,请仔细检查。
无论如何,您可以使用
#pragma warning( disable: 6386 )
预处理指令。我通常将其推送并弹出到“pragma stack”
#pragma warning( push )
#pragma warning( disable : 6386 )
// Some code
#pragma warning( pop )
按照建议 这里.
不隶属于 StackOverflow