c中的2d数组,检查值时出现意外值

c中的2d数组,检查值时出现意外值,c,arrays,pointers,segmentation-fault,C,Arrays,Pointers,Segmentation Fault,这不是整个程序,只是(据我所知)导致问题的片段,如果需要更多,我会更新 为了模拟网格,我需要得到一个0的矩形数组 int Length, Height, NumberOfParticles, Direction, validInput, StartXPosition, StartYPosition; int *LatticeHeight; int **Lattice; LatticeHeight = (int*)malloc(Height*sizeof(int)); /* Chec

这不是整个程序,只是(据我所知)导致问题的片段,如果需要更多,我会更新

为了模拟网格,我需要得到一个0的矩形数组

int Length, Height, NumberOfParticles, Direction, validInput, StartXPosition, StartYPosition;
int *LatticeHeight;
int **Lattice;

LatticeHeight = (int*)malloc(Height*sizeof(int));

/* 
    Check for memory allocation failure 
*/

if(LatticeHeight==NULL)
{
    printf("\nMemory allocation failure. Exiting ...\n");
    return(EXIT_FAILURE);
}

Lattice = (int**)malloc(Length*sizeof(LatticeHeight));

/* 
    Check for memory allocation failure again 
*/

if(Lattice==NULL)
{
    printf("\nMemory allocation failure. Exiting ...\n");
    return(EXIT_FAILURE);
}
然后是一些我忽略的输入验证,但最终它会得到高度和长度的值

int i,j;
for(i=1; i<Height; i++)
{
    LatticeHeight[i] = 0;
}

for(j=0; j<Length; j++)
{
    Lattice[j] = LatticeHeight;
}

for(i=0;i<Height;i++)
{
    for(j=0;j<Length;j++)
    {
        printf("%d\n",Lattice[i][j]);
    }
}

有人能解释一下原因吗?

您已经从
1

for(i=1; i<Height; i++)
{
    LatticeHeight[i] = 0;
}

for(i=1;i@Aaron小心,非常小心,你期望的输出是什么?16个零,这是在Bhargav指出我从1而不是0开始for循环后得到的
for(i=1; i<Height; i++)
{
    LatticeHeight[i] = 0;
}
for(i=0; i<Height; i++)
{
    LatticeHeight[i] = 0;
}