off-by-one error
来源:互联网 发布:苹果5s怎么设置3g网络 编辑:程序博客网 时间:2024/05/21 09:00
大小差一。。
就是指某个变量的最大值和最小值可能会和正常值差1,或者循环多执行一次/少执行一次。
一般在临界情况时发生。
off-by-one,大小差一错误是一类常见的程序设计错误。这方面有一个经典的例子OpenSSH.去Google搜索关键词“OpenSSH off-by-one”可以了解相关状况。具体来说,
1. if(id < 0 || id > channels_alloc)...
2. if(id < 0 || id >= channels_alloc)...
第二句应该是正确的写法。举个更通俗的例子:
int a[5],i;
for(i = 1;i < = 5;i++)
a[i]=0;
上述代码定义了长度为5的数组a,循环的目的是给数组元素初始化,赋值为0.但是,循环下标从1开始到5,出现了a[5]=0,这样的不存在的数组元素.这就是典型的“差一错误”(off-by-one).其实,貌似说栅栏柱错误(fencepost error)大家更熟悉。我问过身边的朋友,很多人知道这个问题。
如果你要建造一个100米长的栅栏,其栅栏柱间隔为10米,那么你需要多少根栅栏柱呢?11根或9根都是正确答案,这取决于是否要在栅栏的两端树立栅栏柱,但是10根却是错误的。 我想起来了我高中是数学老师告诉我们的一个很容易犯错的数学题目。从周一到周五一共有几天?也许你立即反应5-1=4,但是,下意识你也会说五天,实际上应该是5-1+1=5.转换到数学,数字1到数字5一共有几个数字?这里有一个公式 从M到N,一共有 M-N+1 项.
这个问题写出来后很简单,只不过在写代码的时候,往往比较容易忽略。尤其在涉及到数组操作两端界限的时候,如果不是从0开始计数,就要稍微考虑一下咯。
- off-by-one error
- off-by-one error
- off-by-one error
- CWE-193: Off-by-one Error
- off by one
- off-by-one behavior of Python
- off-by-one(大小差一)错误介绍
- off-by-one(大小差一)错误介绍
- introduction to software exploits off-by-one 一字节溢出
- Linux下堆漏洞利用(off-by-one)
- git push error:not Signed-off-by author/committer/uploader
- on、off 和one
- Linux (x86) Exploit 开发系列教程之十一 Off-By-One 漏洞(基于堆)
- oracle 中的one-off补丁
- one by one note
- COPY CHAR ONE BY ONE
- talk one's ear off 喋喋不休
- JQ高级事件之on、off、one
- 差距
- Java中几个容易犯错的地方
- 排序算法
- 在职研究生考试 ---北航
- 线性时间查找固定频率的元素
- off-by-one error
- 更改软键盘的换行键实
- 空时频信号处理基本概念
- ids资料的链接
- tag标签
- sigar常见错误解决方法
- Jdom读取xml文件介绍
- “快速排序法”
- 1000