这段程序编译一切正常,我输入两个小一点的数如4,4等都是正常的,
但是一旦数大一点,如100,200,程序执行到最后就会出错,我把delete那段
for (int j=0;j<n;j++)
{
delete []x[j]
}
delete []x;//清掉总的二维数组delete []x;改成delete []x;就一切ok,不知道是为什么阿!详细代码如下:int m=0;
int n=0;
cout<<"请输入二维数组x的一维大小:";
cin>>m;
cout<<"请输入二维数组x的二维大小:";
cin>>n;
int** x = new int* [m]; for (int i = 0; i < m; i++)
{
x[i] = new int[n];
for (int j=0;j<n;j++)
{
x[i][j]=i+j;
cout<<x[i][j]<<endl;
}
}
for (int j=0;j<n;j++)
{
delete []x[j]
}
delete []x;//清掉总的二维数组
但是一旦数大一点,如100,200,程序执行到最后就会出错,我把delete那段
for (int j=0;j<n;j++)
{
delete []x[j]
}
delete []x;//清掉总的二维数组delete []x;改成delete []x;就一切ok,不知道是为什么阿!详细代码如下:int m=0;
int n=0;
cout<<"请输入二维数组x的一维大小:";
cin>>m;
cout<<"请输入二维数组x的二维大小:";
cin>>n;
int** x = new int* [m]; for (int i = 0; i < m; i++)
{
x[i] = new int[n];
for (int j=0;j<n;j++)
{
x[i][j]=i+j;
cout<<x[i][j]<<endl;
}
}
for (int j=0;j<n;j++)
{
delete []x[j]
}
delete []x;//清掉总的二维数组
{
delete []x[j]
}
delete []x;//清掉总的二维数组
{
delete []x[j]
}
要删掉的是二维数组的每一个分量。而这个数组共有m个分量,每个分量的大小是n.所以应该是for(..,j<m,..)而不是j<n.