2

在我的代码中,我使用了一个包含xyz10 个对象的数组。当我尝试使用这样的无符号 int 索引访问数组元素时:xyz[level],我收到“缓冲区溢出”警告。从逻辑上讲,我很确定该级别不会超过 10。如何避免此警告?

4

2 回答 2

10

我可能正在教我的祖母在这里吸鸡蛋,但请记住“级别不会超过 10”对于大小为 10 的数组是错误的:

char a[10];
a[10] = '\0';  // Bug, and "Buffer Overrun" warning.
于 2010-06-11T10:52:04.483 回答
2

真的确定吗?直到现在我才收到这个警告。所以,仔细检查。

无论如何,您可以使用

#pragma warning( disable: 6386 )

预处理指令。我通常将其推送并弹出到“pragma stack”

#pragma warning( push )
#pragma warning( disable : 6386 )
// Some code
#pragma warning( pop )

正如这里所建议的那样。

于 2010-06-11T10:53:29.907 回答