C++如何创建动态二维数组,然后将二维数组的数保存到一维数组中?

//此程序是我自己编的,但是不能通过,请问这是怎么回事?

#include
using namespace std;
int main()
{
int n,m,k,i,j,l;
cin>>n>>m>>k;
int X[][]={0};
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
X[i][j]=i*j;
}

    int Y[]={0};
for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
    {
        Y[n*m]=X[i][j];
    }
for(l=0;l<n*m;l++)
    cout<<"Y数组中的元素为:"<<Y[l]<<endl;
//system("pause");
return 0;

}

int X[][]={0};这样用不行,至少也需要指定一维的长度
而且你这样直接写入也不行,越界写入,需要先分配空间,可以用new或者malloc