実行時に2次元配列を割り当てようとしています。配列のサイズは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;
}
}