helehappy 发表于 2015-3-12 18:34:38

直接插入排序小甲鱼代码有漏洞

刚才看了小甲鱼老师的数据结构第90集,讲插入排序,讲完我自己敲一遍,运行前代码完全跟小甲鱼一样,但是,我的一运行就报错,调试下,是第二个for循环j--越界了!! 循环里面没有对j的可行性进行检查,我自己添加了一个 &&j >=0   运行成功(对于不同数据检测时j--
可以让j小于0)。 百度了下,百度上的代码有&&j>-1,哈哈,第一次发现小甲鱼老师代码漏洞! 可能是忙的时候疏忽了这个!
void InsertSort(int *k,int n)
{
    int i,j,temp;
    for(i = 1; i < n;i++)
    {
      if(k < k)
      {
            temp = k;
            for(j = i-1;k > temp&&j >=0;j--)
            {
                k = k;
            }
            k = temp;
      }
    }
}

jorhelp 发表于 2018-1-2 23:30:37

哇,我还以为自己错了呢,结果还真是小甲鱼这个小坑货代码有缺陷,幸好来这里search一下,他的代码好像没有设监视哨,倒置越界访问了。

shiyideliutang 发表于 2019-10-18 10:25:59

学习了,多谢

davy001368 发表于 2020-3-8 09:38:34

我昨天学习到这里,也发现小甲鱼错了。因为我是自己先写好代码,然后看他的视频印证,所以一眼就看出数组越界的问题,但是后面视频中也没提到这个,然后上百度搜。。。上来这里找,果然有人几年前看过的都提出这个情况了。好。
页: [1]
查看完整版本: 直接插入排序小甲鱼代码有漏洞