① 分析下面小程序的健壯性
從上說到下吧
1:函數入口未驗證.要防止FillUserInfo(USERINFO* parUserInfo)的參數指針是非法指針.
2:從設計的角度來說,把數據長度的限定和數據傳遞值分開是非常危險的.
比如FillUserInfo(USERINFO* parUserInfo)我傳了USERINFO arUserInfos[100]進去.裡面輸入nCount的時候我輸入101呢?一般來說應該FillUserInfo(USERINFO* parUserInfo,int nSize);傳入一個需要賦值的長度參數.而且你在函數裡面也無法計算parUserInfo的長度.
3:將std::string賦值給c風格字元串是十分危險的.
string是動態開辟內存.長度是無限的.如果超過c風格數組的長度既MAX_NAME_LEN很容易造成棧溢出或內存訪問崩潰.如需這樣用.請用strncpy(parUserInfo[i].szName,strName.c_str(),20);
4:一個細節.for(int i=0;i<nCount;i++)
雖然C++支持定義時使用.但不建議這么寫.不同版本的編譯器對此理解不同.不利於擴展和向上升級.
微軟建議還是用int i = 0 ;
for(i=0;i<nCount;++i)
5:USERINFO arUserInfos[100]={0};結構體賦值不建議這么做.
有兩種推薦的安全做法
1--構造函數初始化.
2--ZeroMemory(arUserInfos,sizeof(arUserInfos));
恩,不安全的就這些了.另外,混用printf和cout,cin也是不好的.雖然不會有危險.但是其使用不同的緩沖流可能存在輸出順序混亂的問題
② 健壯性 和 可靠性 有什麼區別
健壯性是指程序在運行過程中出現一般性的錯誤,程序會自動進行錯誤處理函數。
可靠性是指程序在運行過程中出現錯誤的概率,一般會做一些可靠性試驗來測試MTBF。
③ 什麼是C語言的健壯性
健壯性又稱為魯棒性。
1、魯棒性就是系統的健壯性.比如說,計算機軟體在輸入錯誤、磁碟故障、網路過載或有意攻擊情況下,能否不死機、不崩潰,就是該軟體的魯棒性.對於控制系統而言,是指系統在一定(結構,大小)的參數攝動下,維持某些性能的特性.根據對性能的不同定義,可分為穩定魯棒性和性能魯棒性.以閉環系統的魯棒性作為目標設計得到的固定控制器稱為魯棒控制器.
2、對於實際工程系統,人們最關心的問題是一個控制系統當其模型參數發生大幅度變化或其結構發生變化時能否仍保持漸近穩定,這叫穩定魯棒性.進而還要求在模型擾動下系統的品質指標仍然保持在某個許可范圍內,這稱為品質魯棒性.魯棒性理論目前正致力於研究多變數系統具有穩定魯棒性和品質魯棒性的各種條件.它的進一步發展和應用,將是控制系統最終能否成功應用於實踐的關鍵.
④ 程序魯棒性是什麼意思
魯棒性(robustness)就是系統的健壯性。它是在異常和危險情況下系統生存的關鍵。比如說,計算機軟體在輸入錯誤、磁碟故障、網路過載或有意攻擊情況下,能否不死機、不崩潰,就是該軟體的魯棒性。所謂「魯棒性」,是指控制系統在一定(結構,大小)的參數攝動下,維持某些性能的特性。根據對性能的不同定義,可分為穩定魯棒性和性能魯棒性。以閉環系統的魯棒性作為目標設計得到的固定控制器稱為魯棒控制器。
魯棒性原是統計學中的一個專門術語,20世紀70年代初開始在控制理論的研究中流行起來,用以表徵控制系統對特性或參數攝動的不敏感性。在實際問題中,系統特性或參數的攝動常常是不可避免的。產生攝動的原因主要有兩個方面,一個是由於量測的不精確使特性或參數的實際值會偏離它的設計值(標稱值),另一個是系統運行過程中受環境因素的影響而引起特性或參數的緩慢漂移。因此,魯棒性已成為控制理論中的一個重要的研究課題,也是一切類型的控制系統的設計中所必須考慮的一個基本問題。對魯棒性的研究主要限於線性定常控制系統,所涉及的領域包括穩定性、無靜差性、適應控制等。魯棒性問題與控制系統的相對穩定性(頻率域內表徵控制系統穩定性裕量的一種性能指標)和不變性原理(自動控制理論中研究扼制和消除擾動對控制系統影響的理論)有著密切的聯系,內模原理(把外部作用信號的動力學模型植入控制器來構成高精度反饋控制系統的一種設計原理)的建立則對魯棒性問題的研究起了重要的推動作用。當系統中存在模型攝動或隨機干擾等不確定性因素時能保持其滿意功能品質的控制理論和方法稱為魯棒控制。早期的魯棒控制主要研究單劻路系統頻率特性的某些特徵,或基於小攝動分析上的靈敏度問題。現代魯棒控制則著重研究控制系統中非微有界攝動下的分析與設計的理論和方法。