• hua168
    2019-03-20
    第三段代码
    for (int i = 0; i < nums.length; i++) {…}
    把nums设置为i的最大值,这样i++就溢出

    作者回复: 嗯,今天学到新东西了,我以前没有意识到这个溢出问题。

    
     4
  • 我来也
    2019-03-20
    C语言的代码我看的懂,就回复下.
    需要对参数做合法性校验. buf 不能为NULL. memcopy时的长度不能为负数.
    我们写的函数,需要考虑健壮性.
    需要保证不管别人传什么参数,我们的代码不出问题.
    以下是完善后的代码.
    ---------------------------
    int copy_something(char* buf, int len){
        char kbuf[800];

        if ((NULL == buf) || (len <= 0)) { //len为0时拷贝0字节,没意义.
            return -1;
        }

        if(len > sizeof(kbuf)){
            return -1;
        }

        return memcpy(kbuf, buf, len);
    }

    展开
    
     2
  • 空知
    2019-03-20
    nums数组没说正负,负数 target - nums 可能溢出

    作者回复: 👍

    
     2
  • hua168
    2019-03-20
    public static int mixed(int addOn, int multiplied, int scale) {
        return addOn + (multiplied * scale);
    }
    1. (multiplied * scale)如果相乘大于默认的int类型最大值会溢出
    2. addOn + (multiplied * scale)相加大于int最大值也会溢出
    
     2
  • 一周思进
    2019-07-07
    这个最后证书问题,为什么不可以使用64位无符号数表示呢?

    作者回复: 可以使用64位无符号数呀,为什么不可以呢?

    
     1
  • 彩色的沙漠
    2019-05-31
    @hua168同学
    第三段代码
    for (int i = 0; i < nums.length; i++) {…}
    把nums设置为i的最大值,这样i++就溢出

    实际这段代码把nums设置i的最大值,i++是不会溢出的,因为条件是i<nums.length;如果条件是i<=num.length,那么把nums设置i的最大值,i++是会溢出的。
    展开
     1
     1
  • Demon.Lee
    2019-03-21
    kbuf好像还要memset初始化一下吧
    
     1
  • 我来也
    2019-03-20
    C语言的代码看得懂,我就回复下.
    
     1
  • Feng.X
    2019-03-22
    老师,这段代码if ((data.length + 1024) > cache.remaining()) ,为什么是+1024?

    作者回复: 1024在这段代码里没有特别的含义。因为data.length的最大值是2^14, 我想用data.length + 1024说明,这样的操作不会产生整数的溢出问题,也就是“限定了数的范围“的安全性。

    
    
  • wahaha
    2019-03-21
    gosu支持checked arithmetic
    
    
我们在线,来聊聊吧