这段程序编译一切正常,我输入两个小一点的数如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;//清掉总的二维数组

解决方案 »

  1.   

    for (int j=0;j<n;j++)     //应该是for(int j=0;j<m;j++)吧。
    {
    delete []x[j]
    }
    delete []x;//清掉总的二维数组
      

  2.   

    x是你一次分配的空间的指针,用delete []x释放空间即可
      

  3.   

    for (int j=0;j<m;j++)     
    {
    delete []x[j]
    }
    要删掉的是二维数组的每一个分量。而这个数组共有m个分量,每个分量的大小是n.所以应该是for(..,j<m,..)而不是j<n.