日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】VS 安全开发生命周期(SDL)检查

發布時間:2025/3/18 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】VS 安全开发生命周期(SDL)检查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【轉】VS 安全開發生命周期(SDL)檢查

前面在學習使用google的protobuf時在VS2012中一直無法編譯編譯通過,經過查找一些資料原來發現,并不是protobuf的問題,而是自己在使用VS2012時,沒有完全了解VS2012的強大功能,和跟以前VS2010的差別,導致無法編譯通過。

?

現在就來說說為什么沒有編譯通過,在VS2012創建項目時,會有一個勾選項,叫做“安全開發生命周期(SDL)檢查”,這個東西是微軟在VS2012新推出的東西,為了是能更好的監管開發者的代碼安全,如果勾選上這一項,那么他將嚴格按照SDL的規則編譯代碼,會有一些以前常用的函數無法通過編譯,比如在VS2010中的scanf是warning那么在VS2012中就是error了。

?

查看MSDN中對SDL的描述,SDL檢查會視以下告警為錯誤:

?

/sdl 啟用警告

等效的命令行開關

描述

C4146

/we4146

一元負運算符應用于無符號類型,從而導致無符號結果。

C4308

/we4308

一個負整型常數轉換為無符號類型,從而導致一個可能無意義結果。

C4532

/we4532

__finally?/finally中的關鍵詞,使用continue,?break?或?goto在異常終止塊未定義行為。

C4533

/we4533

初始化變量的代碼不會執行。

C4700

/we4700

使用未初始化的局部變量。

C4703

/we4703

對一個潛在的未初始化的局部指針變量的使用。

C4789

/we4789

當使用時,請緩沖區溢出特定 C 運行時 (CRT) 函數。

C4995

/we4995

使用函數的標deprecated。

C4996

/we4996

使用函數的標記作為deprecated。

?

也就是在編譯的時候,當SDL檢查啟用時,編譯器會嚴格檢測緩沖區的溢出,并且會在delete某個指針時,自動為這個指針定義一個非有效的值,防止在delete以后仍用到這個指針時出錯。還有就是會在你定義一個對象時,自動為這個對象賦值零。

?

從這些功能來看,有些功能還是不錯的,不但方便了程序員使用也增強了程序的健壯性,但是對老版本程序的兼容就會出現問題,以前程序中編譯通過的內容也許在VS2012中就沒有辦法通過,還是大家根據自己的習慣自行考慮是否使用這個東西吧。

?

另:還有一個選擇打開和關閉SDL檢查的位置就是:項目屬性->配置屬性->C/C++->SDL檢查,選測是或者否

?

轉自:http://blog.csdn.net/angle635/article/details/22035427

posted on 2018-02-11 09:47 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏

總結

以上是生活随笔為你收集整理的【转】VS 安全开发生命周期(SDL)检查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。