在我的代码中,我使用了10个对象的数组xyz
。当我试图访问数组元素使用像这样的无符号int索引:xyz[level]
,我得到'Buffer overrun的警告。从逻辑上讲,我很确定这个级别不会超过10.如何避免这个警告?避免'缓冲区溢出'C6386警告
回答
我可能教我的奶奶在这里班门弄斧,但千万记住“水平不会超过10”是错误的大小10的阵列:
char a[10];
a[10] = '\0'; // Bug, and "Buffer Overrun" warning.
+1,因为我很确定这正是OP得到警告的原因。 – 2010-06-11 11:00:39
是的,这与我的问题有些相关。在访问这个'xyz [level]'之前,我做了一个像这样的检查'if(level <10)',警告消失了。 – bdhar 2010-06-17 11:04:20
你真的肯定?直到现在,我从未得到过这个警告。所以,仔细检查。
无论如何,你可以使用
#pragma warning(disable: 6386)
预处理指令。我通常会将此推送到“编译指示堆栈”
#pragma warning(push)
#pragma warning(disable : 6386)
// Some code
#pragma warning(pop)
建议here。
这是相当危险的警告可能是由一个错误引起的。只有在你是**一定的时候才会发出沉默警告**造成它们的原因是无害的。 – 2010-06-12 17:23:48
- 1. 缓冲区溢出(VS)缓冲区溢出(VS)堆栈溢出
- 2. 在C++中使用cin和Width()来避免缓冲区溢出
- 3. 缓冲区溢出
- 4. 缓冲区溢出缓冲区长度
- 5. 缓冲区溢出不溢出
- 6. VS2015:[C6386]写入时缓冲区溢出(即使对于相同的索引值)
- 7. 缓冲区溢出与gets()
- 8. PaX和缓冲区溢出
- 9. JSP缓冲区溢出
- 10. 缓冲区溢出攻击
- 11. 的strtok - 缓冲区溢出
- 12. 缓冲区溢出为homeowrk
- 13. 过程缓冲区溢出
- 14. 试验缓冲区溢出
- 15. C++溢出缓冲区
- 16. vi,vim缓冲区溢出
- 17. 缓冲区溢出 - linux 64bit
- 18. 避免溢出
- 19. 没有填充接收缓冲区的UDP缓冲区溢出?
- 20. 推回缓冲区溢出 - 但我的缓冲区还未满?
- 21. 堆栈溢出和缓冲区溢出有什么区别?
- 22. Textview缓冲区插入警告
- 23. 避免输出缓冲错误serevr
- 24. 递归函数缓冲区溢出
- 25. 使用snprintf缓冲区溢出
- 26. c malloc防止缓冲区溢出
- 27. 高速串行(UART)缓冲区溢出
- 28. 堆/缓冲区溢出异常
- 29. JAVA中的缓冲区溢出
- 30. 在ATL COM DLL的缓冲区溢出
你可以发布你得到警告的代码吗? – 2010-06-11 10:47:44
不确定。这是我正在处理的一个相当大的代码库。我试图用一个小例子重现它。让我在成功时发布。谢谢! – bdhar 2010-06-11 11:08:05