void TBLFree (MNG* pMng)函数中的Free为何会意外跳出!

/******************************************************************/
/* Module: TBLFree /
/
Function: free list /
/
Input: * pMng /
/
Output: pMng */
/
NOTE: /
/
Return: void /
/
******************************************************************/
void TBLFree (MNG* pMng)
{
int nCnt = pMng->nNodeCnt;
int i;
if(NULL == pMng)
{
printf("error !\n");
}
LTBL *EX = NULL;
LTBL *EY = NULL;
pMng->nNodeCnt = nCnt;
EX = pMng->pHead;
for(i = 1;i <= nCnt;i++)
{
EY = EX->pNxt;
free(EX);
EX = NULL;
EX = EY;
}

pMng->pHead = NULL;
pMng->nNodeCnt = 0;
printf("Free list successful !\n");
printf("\n");
printf("\n");
printf("\n");

}

MNG是什么结构,求一个完整的程序看看。

 void TBLFree (MNG* pMng)
{
    int nCnt = 0;
    int i = 0;

    LTBL *EX = NULL;
    LTBL *EY = NULL;

    if( NULL == pMng )
    {
        printf("error !\n");
        return;
    }

    nCnt = pMng->nNodeCnt;
    EX = pMng->pHead;

    for(i = 0;i < nCnt;i++)
    {
        if ( NULL != EX )
        {
            EY = EX->pNxt;
            free(EX);
            EX = EY;
        }
    }

    pMng->pHead = NULL;
    pMng->nNodeCnt = 0;

    printf("Free list successful !\n");
    printf("\n");
    printf("\n");
    printf("\n");
}

什么东西没初始化吧。