我试图在运行时分配二维数组。数组的大小为 N*N,其中 N 由用户输入。最后,我正在删除分配的内存。但是我遇到了分段错误。我知道当我尝试访问不是由我分配的内存时会发生分段错误。请帮助代码如下:
#include<iostream>
using namespace std;
#include <stdio.h>
int main ()
{
int t,n;
int **judge;
int **result;
int i,j,l;
int high;
float count;
int item;
cin>>t;
while(t-->0)
{
cin>>n;
judge=new int*[n];result=new int*[n];
for(i=0;i<n;i++)
{
judge[i]=new int[n];
result[i]=new int[n];
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cin>>judge[i][j];
}
}
count=0;
result[0][0]=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
item=0;
if(j>0&&i>0)
{
if(item<result[i][j-1])
item=result[i][j-1];
else if(item<result[i-1][j])
item=result[i-1][j];
}
else if(i==0)
{
if(item<result[i][j-1])
item=result[i][j-1];
}
else if(j==0)
{
if(item<result[i-1][j])
item=result[i-1][j];
}
result[i][j]=judge[i][j]+item;
}
}
if(result[n-1][n-1]<0.0)
cout<<"Bad Judges"<<endl;
else
{
count=(result[n-1][n-1]/(float)n);
cout<<count<<endl;
}
for( i = 0 ; i < n ; ++i)
{
delete[] result[i] ;
}
delete[] result;
for(i = 0 ; i < n ; ++i)
{
delete[] judge[i] ;
}
delete[] judge;
/* for(i=0;i<n;i++)
{
delete[] judge[i];
delete[] result[i];
}*/
// delete[] judge;
//delete[] result;
}
}