大佬们帮帮忙,没搞懂这段代码为什么会炸
#include<bits/stdc++.h>
using namespace std;
string amb(string A,string B){
if(A=="0" or B=="0"){
return "0";
}
int a[B.size()],b[A.size()];
for(int i=0;i<max(A.size(),B.size());i++){
if(i<A.size()){
a[i]=A[A.size()-i-1]-'0';
}
if(i<B.size()){
b[i]=B[B.size()-i-1]-'0';
}
}
string ans="";
int last=0;
// int ans[A.size()+B.size()]={0};
for(int i=0;i<A.size();i++){
for(int j=0;j<B.size();j++){
ans[i+j]+=a[i]*b[j];
}
}
for(int i=0;i<A.size()+B.size();i++){
if(ans[i]>9){
ans[i+1]+=ans[i]/10;
ans[i]=ans[i]%10;
}
}
string anser="";
bool flag=false;
for(int i=A.size()+B.size()-1;i>=0;i--){
if(ans[i]!=0){
flag=true;
}
if(flag){
anser+=ans[i]+'0';
}
}
return anser;
}
int main() {
string a, b;
cin >> a >> b;
cout<<amb(a, b)<<endl;
return 0;
}