时间:2021-05-02
今天敲代码的时候发现了一个BUG和大家分享一下,希望大家下次不要犯和我一样的错误。
如果犯了和我一样的错,也能知道自己错在哪里! <(^-^)>
函数如下:(斐波那契数列的实现)
? 1 2 3 4 5 6 7 8 9 10 11 12 13 long long FibonacciSeq( int n) { long long *fib=new long long[n+1]; fib[0] = 0; fib[1] = 1; for (int i = 2;i <=n; i++) { fib[i] = fib[i - 1] + fib[i - 2]; } long long ret = fib[n]; delete[] fib; return ret; }上面的程序有BUG,如果传给函数的参数是0,程序就会因为触发一个断点而崩溃。
单步调试,根据内存窗口就会发现问题所在!
fib指向的内存初始化完成后,其的内存情况如上图,我们可以观察到这块内存的前后都有 fd fd fd fd ,0xFD为初始化受保护的内存(debug版在动态分配内存的前后加入保护内存以防止越界访问),而fib[1] = 1;正好把fd fd fd fd 以及它后面的四个字节改为了01 00 00 00 00 000000,如下图:
程序运行到delete[] fib;时只找到了“受保护的内存标志”的起始位置,另外一个“受保护的内存标志”找不到了,所以程序运行会失败!
其实很简单,也就是发生了越界访问!我只new了一块空间,却存了两个变量,当然不行了!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
spring打包jar包时jsp页面无法访问问题如下当前pom.xml配置src/main/resourcesfalsesrc/main/webappMETA-
淘宝美工面试常问问题有哪些?面试美工提问哪些问题?在进行淘宝美工面试之前,先要了解淘宝美工面试常问问题有哪些?面试美工提问哪些问题?小编今天跟大家分享一些淘
springboot是快速构建微服务的新框架。对于数据访问问题可以直接使用jpa技术,但是在单元测试发现springjpa存在hibernate懒加载问题。但是
malloc/free和new/delete的区别malloc/free是C/C++标准库的函数;new/delete是C++操作符。malloc/free只是
一:剖析需求,提出问题 在做需求分析的时候,产品经理的一个大忌就是,拿来就做,不问问题。不问问题有两种可能性:种可能性是需求已经提的很完善了,没有什么问题可以