附加题程序找bug
1 private: 2 void Resize(int sz){ 3 if(sz<=0){ 4 return; 5 } 6 if(maxSize != sz){ 7 T *arr = new T[sz]; 8 if(arr == NULL){ 9 return; 10 } 11 int n = size +1; 12 T *src = data; 13 T * des = arr; 14 while(n--){ 15 *des++ = *src++; 16 } 17 delete[] data; 18 data = arr; 19 maxSize = size; 20 } 21 }
源程序如上图,现在开始找bug。
bug一:maxSize没有定义,无法判断maxSize != sz。
bug二:size没有定义,使用size+1没有道理。
bug三:T没有定义是结构体或者是其它什么,就去创建对象了。
bug四:data也没有定义。
bug五:由于size没有定义,所以n也无法确定。在使用while(n--)时会存在错误。
bug六: *des++ 存在越界的风险。(博客评论中很多人提出的bug)
bug七:没有定义的data的情况下就使用delete[ ],存在一定的风险。
在找bug的过程中,也是学习的过程。由于水平有限,希望老师多批评指正。感谢杨老师和邹老师给我这次找bug的机会。