所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。
另外健壮性有时也和容错性,可移植性,正确性有交叉的地方。
比如,一个软件可以从错误的输入推断出正确合理的输入,这属于容错性量运困蠢度标准,但是也可以认为这个软件是健壮的。
一个软件可以正确地运行在不同环境下,则认为软件可移植性高,也可以叫,软件在不同平台下是健壮的。
一个软件能够检测自己内部的设计或者编码错误,尺圆并得到正确的执行结果,这是软件的正确性标准,但是也可以说,软件有内部的保护机制,是模块级健壮的。
软件健壮性是一个比较模糊的概念,但是却是非常重要的软件外部量度标准。软件设计的健壮与否直接反应了分析设计和编码旁陪人员的水平。即所谓的高手写的程序不容易死。
健壮性又称为鲁棒性。1、鲁棒性就是系统的健壮性.比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情行禅况下,能否不死机、不崩溃,就是该软件的鲁棒性.对于控旦带态制系统而言,是指系统在一定(结构,大小)的参数摄动下,维持某些性能的特模源性.根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性.以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器.
2、对于实际工程系统,人们最关心的问题是一个控制系统当其模型参数发生大幅度变化或其结构发生变化时能否仍保持渐近稳定,这叫稳定鲁棒性.进而还要求在模型扰动下系统的品质指标仍然保持在某个许可范围内,这称为品质鲁棒性.鲁棒性理论目前正致力于研究多变量系统具有稳定鲁棒性和品质鲁棒性的各种条件.它的进一步发展和应用,将是控制系统最终能否成功应用于实践的关键.
从上说到下吧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=0i<nCounti++)
虽然C++支持定义时使用.但不建议这么写.不同版本的编译器对此理解不同.不利于扩展和向上升级.
微软建议还是用int i = 0
for(i=0i<瞎拿nCount++i)
5:USERINFO arUserInfos[100]={0}结构体赋磨做搭值不建议这么做.
有两种推荐的安全做法
1--构造函数初始化.
2--ZeroMemory(arUserInfos,sizeof(arUserInfos))
恩,不安全的就这些了.另外,混用printf和cout,cin也是不好的.虽然不会有危险.但是其使用不同的缓冲流可能存在输出顺序混乱的问题
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)