我需要你对这段代码的帮助;尽管有正确的代码我仍然会遇到运行时错误。我知道SIGABRT错误是由于内存过多造成的;你能告诉我我的代码出了什么问题以及如何纠正它吗?
#include<iostream>
#include<stdlib.h>
#include<string>
int count=0;
int a[1000];
using namespace std;
void check(string *str,int p)
{
int j=0,i,k;
int flag=0;
char *first=new char[p];
char *last=new char[p];
for(int i=0;i<p;i++)
{
first[j]=str[i].front();
last[j]=str[i].back();
j++;
}
for(i=0;i<j;i++)
for(k=0;k<j;k++)
{
if(flag>=2)
{
a[count++]=0;
delete first;
delete last;
return;
}
if(first[i]==last[k])
break;
if(k==j-1)
flag++;
}
if(flag>=2)
{
a[count++]=0;
delete first;
delete last;
return;
}
if(i==j)
a[count++]=1;
delete first;
delete last;
}
int main()
{
int t,p;
cin>>t;
for(int i=0;i<t;i++)
{
cin>>p;
string *str=new string[p];
for(int i=0;i<p;i++)
cin>>str[i];
check(str,p);
delete str;
}
for(int i=0;i<count;i++)
if(a[i]==0)
cout<<"\nThe door cannot be opened.";
else
cout<<"\nOrdering is possible.";
return 0;
}
答案 0 :(得分:0)
我相信你的代码中存在一个主要问题。您分配数组但删除单个指针。对于FROM com.strutsProject.dto.EventClubTb as C join C.achievementsTb as A
,应使用FROM com.strutsProject.dto.EventClubTb as C, com.strutsProject.dto.AchievementsTb as A
where A.EVENTNAME=C.EVENTNAME
代替new []
。我相信它应该解决错误。