参数的适当的值
来源:互联网 发布:网络机顶盒比论坛 编辑:程序博客网 时间:2024/05/01 13:24
看到这里的潜在问题?程序员认为用户会输入一个值,0和长度之间的“你好,世界!“。如果用户输入一个负数,或大量的数组索引,索引会出界。在这种情况下,因为我们只是读值,程序会打印一个垃圾信。但在其他情况下,程序可能会损坏其他变量,堆栈,或崩溃。
事实上,我们可以捉到几乎所有的假设,需要在三个地点进行检查:
当一个函数被调用,用户可以通过在语义上毫无意义的函数参数。
当一个函数返回,返回值可能表明发生了一个错误。
当一个函数返回,返回值可能表明发生了一个错误。
当程序接收输入(无论是从用户,或文件),输入不正确的格式。
因此,下列规则时应使用编程的防守:
因此,下列规则时应使用编程的防守:
在每个函数前,检查以确保任何参数的适当的值。
在一个函数被调用,检查它的返回值(如果有),以及任何其他的错误报告机制,看是否发生了一个错误。
验证用户输入,以确保其符合预期的格式或范围标准。
让我们在这些例子都看一看。
问题:当一个函数被调用,用户可以通过在语义上毫无意义的函数参数。
1
2
3
4
void
PrintString(
char
*strString)
{
std::cout << strString;
}
1
2
3
4
5
6
void
PrintString(
char
*strString)
{
// Only print if strString is non-null
if
(strString)
std::cout << strString;
}
1
2
3
// Declare an array of 10 integers
int
*panData =
new
int
[10];
panData[5] = 3;
1
2
3
4
5
6
// Delcare an array of 10 integers
int
*panData =
new
int
[10];
// If something went wrong
if
(!panData)
exit
(2);
// exit the program with error code 2
panData[5] = 3;
0 0
- 参数的适当的值
- 给一个CALL传入适当的参数
- cocos2d 设定适当的声音回放参数
- PostgreSQL性能调优:设置适当的系统参数
- 采用适当的评论
- 论适当的规模
- 进行迁移的适当时机
- 运用适当的对话言语
- 建立适当的索引(ZZ)
- 适当的放弃再来[转]
- vector&String的适当容量
- vector&String的适当容量
- 适当放松放松的非
- 也许是适当的人
- 选择适当的排序算法
- 等候适当的时光再遇
- 选择适当的NFC标签类型
- 写代码时适当休息的必要性
- crm操作视图
- 【每日早读】互联网资讯推荐(2014-6-27)
- 用js自动跳转到手机版
- 使用blender做一个地球模型,贴上UV纹理,导出Obj格式
- linux cp 源文件与目标文件权限
- 参数的适当的值
- labview循环-移位寄存器妙用
- dpkg: error processing mysql-server (--configure): dependency problems - leaving unconfigured
- NSData NSDate NSString NSArray NSDictionary 相互转换
- office 2013打开慢的问题
- Android Dpi dip px 以及DisplayMetrics中density densityDpi的关系
- c++的宏和内联函数
- Go语言之父谈Go:大道至简
- java生成war包,tomcat部署