下面这段代码为什么是异常的

下面这段代码为什么是错误的?
#include <iostream.h>
struct   Matrix
{
int   **data;
int   mu,nu;
};
Matrix   *Creat()
{
Matrix   *A=new   Matrix;
int   i,j;
cout < < "请输入行数: ";
cin> > A-> mu;
cout < < "请输入列数: ";
cin> > A-> nu;
                  A-> data=new   *int[A-> mu];             //这里有错
                  for(i=0;i <=nu;i++)                         //这里也有错
                                    A-> data[i]=new   int[A-> nu];
cout < < "请输入每行每列的数据(按先行后列的顺序): " < <endl;
for(i=1;i <=A-> mu;i++)
{
cout < < "请输入第 " < <i < < "行: " < <endl;
for(j=1;j <=A-> nu;j++)
{
cout < < " 第 " < <j < < "列数据: ";
cin> > A-> data[i][j];
}
cout < <endl;
}
return   A;
}

为什么这里用NEW进行动态分配二维数组空间的时候会报错?

谢谢大家!


------解决方案--------------------
A-> data=new *int[A-> mu]; //这里有错,改为 A-> data=new int*[A-> mu];
for(i=0;i <=nu;i++) //这里也有错,改为 for(i=0;i <=A-> nu;i++)
------解决方案--------------------
// A-> data=new *int[A-> mu];
A-> data=new int * [A-> mu];
// for(i=0;i <=nu;i++)
// A-> data[i]=new int[A-> nu];
for(i=0;i < A-> nu; i++)
A-> data[i]=new int[A-> nu];