附加题程序找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的机会。

原文地址:https://www.cnblogs.com/wwd1993/p/7701625.html