vs/c++缓冲区溢出,未初始化变量检查
生活随笔
收集整理的這篇文章主要介紹了
vs/c++缓冲区溢出,未初始化变量检查
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
緩沖區溢出(buffer overrun)是c/c++開發中比較令人頭痛的問題,vs2005中有若干編譯選項
可以有效的幫助程序員定位這些問題:
1,/GS:優化模式下有效,檢測緩沖區溢出,只能檢測出覆蓋了返回地址的情況.
2,/RTCs:優化模式下無效,檢測緩沖區溢出
void?Test2(){
???char?buffer1[100];
???char?buffer2[100];
???buffer1[0]?=?0;
???for?(int?i=0?;?i?<=?sizeof(buffer2);?i++)
???{
??????buffer2[i]?=?'a';
???}
???buffer2[sizeof(buffer2)-1]?=?0;//檢測出buffer2溢出,上面的for中應該使用<而不是<=
???cout?<<?buffer2?<<?'-'?<<?buffer1?<<?endl;
}
?
注:以上方法只能檢測棧中的內存溢出,對于堆的內存(new出來的內存)溢出無效.
3,/RTCc: 優化模式下無效,可以檢測出數據截斷的情況
{
???unsigned?char?ch;
???ch?=?(unsigned?char)value;//檢測出錯誤!
}
?
4,/RTCu:優化模式下無效,檢測使用未初始化的變量
void?test(){
????int?i;
????int?k?=?i?*?100;?//檢測出錯誤!
}
?
參考:
1,http://msdn.microsoft.com/en-us/library/aa289171.aspx
2,http://msdn.microsoft.com/en-us/library/aa290051.aspx
轉載于:https://www.cnblogs.com/corefans/archive/2008/12/18/1357845.html
總結
以上是生活随笔為你收集整理的vs/c++缓冲区溢出,未初始化变量检查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Brad Wilson写的 ASP.NE
- 下一篇: LitePal数据的存储