在我的代码中,我使用了一个包含10个对象的数组xyz
。当我尝试使用无符号整数索引访问数组的元素时,例如:xyz[level]
,我会收到'缓冲区溢出'警告。从逻辑上讲,我非常确定level不会超过10。如何避免这个警告?
在我的代码中,我使用了一个包含10个对象的数组xyz
。当我尝试使用无符号整数索引访问数组的元素时,例如:xyz[level]
,我会收到'缓冲区溢出'警告。从逻辑上讲,我非常确定level不会超过10。如何避免这个警告?
我可能是在教奶奶如何吃蛋,但请记住,“级别不会超过10”对于大小为10的数组是错误的:
char a[10];
a[10] = '\0'; // Bug, and "Buffer Overrun" warning.
xyz[level]
之前,我进行了类似于 if (level < 10)
的检查,警告消失了。 - bdhar你真的确定吗?我直到现在都没有收到这个警告。因此,请再次确认。
无论如何,你可以使用
#pragma warning( disable: 6386 )
#pragma warning( push )
#pragma warning( disable : 6386 )
// Some code
#pragma warning( pop )
如此建议在这里。