高手帮我看看这里的delete出了什么问题
最近发现个很诡异的delete的问题,代码如下:
#include <iostream>
using namespace std;
int* plus(int * first,int na, int * second,int nb){
int * result1;
if(na >= nb){
result1 = new int [na + 1];
int * add = new int [na];
add[0] = 0;
for(int i = 0;i < nb;i ++){
result1[i] = (first[i]+second[i]+add[i]) % 10;
add[i+1] = (first[i]+second[i]+add[i]) / 10;
}
for(;i < na;i ++){
result1[i] = (first[i]+add[i]) % 10;
add[i+1] = (first[i]+add[i]) / 10;
}
if(add[i] == 0) result1[i] = -1;
else result1[i] = add[i];
// delete [] add;
}
else{
result1 = new int [nb + 1];
int * add = new int [nb];
add[0] = 0;
for(int i = 0;i < na;i ++){
result1[i] = (first[i]+second[i]+add[i]) % 10;
add[i+1] = (first[i]+second[i]+add[i]) / 10;
}
for(;i < nb;i ++){
result1[i] = (second[i]+add[i]) % 10;
add[i+1] = (second[i]+add[i]) / 10;
}
if(add[i] == 0) result1[i] = -1;
else result1[i] = add[i];
// delete [] add;
}
return result1;
}
int main(){
int * first = new int [1];
first[0] = 1;
int na = 1;
int * second = new int [1];
second[0] = 2;
int nb = 1;
int * result = plus(first,na,second,nb);
cout <<first[0]<< " + " <<second[0]<< " = " <<result[0] << endl;
return 0;
}
这里代码是正常的,但是我把plus函数中的2行"//delete [] add;"去掉注释后,运行就有问题了。我莫名了,大大们帮看看是怎么回事吧。