在我的代碼中,我使用了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