在我的代码中,我使用了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. 避免Geotools StreamingRenderer警告:绘制缓冲
- 2. 为什么此代码在Visual Studio 2012的代码分析中发出缓冲区溢出警告(C6385/C6386)?
- 3. 缓冲区溢出(VS)缓冲区溢出(VS)堆栈溢出
- 4. 在C++中使用cin和Width()来避免缓冲区溢出
- 5. 调整gets()以避免缓冲区溢出
- 6. 缓冲区溢出
- 7. 缓冲区溢出缓冲区长度
- 8. Pika:写缓冲区超出警告
- 9. VS2015:[C6386]写入时缓冲区溢出(即使对于相同的索引值)
- 10. 缓冲区溢出不溢出
- 11. 堆栈缓冲区溢出
- 12. 缓冲区溢出攻击
- 13. 测试缓冲区溢出
- 14. JSP缓冲区溢出
- 15. 数组缓冲区溢出
- 16. QTime缓冲区溢出?
- 17. 过程缓冲区溢出
- 18. C++溢出缓冲区
- 19. 的strtok - 缓冲区溢出
- 20. 缓冲区溢出援助
- 21. Dillema与缓冲区溢出
- 22. 缓冲区溢出与gets()
- 23. PHP缓冲区溢出
- 24. 利用缓冲区溢出
- 25. OpenCV缓冲区溢出
- 26. AudioRecord:缓冲区溢出?
- 27. 缓冲区溢出Xuggler
- 28. 试验缓冲区溢出
- 29. 缓冲区溢出攻击
- 30. vi,vim缓冲区溢出
你可以发布你得到警告的代码吗? – 2010-06-11 10:47:44
不确定。这是我正在处理的一个相当大的代码库。我试图用一个小例子重现它。让我在成功时发布。谢谢! – bdhar 2010-06-11 11:08:05