结构体定义:
typedef struct tagCATALOGNODE
{
WCHAR *pwzCatalogID;
WCHAR *pwzCatalogName;
tagCATALOGNODE *pCatalogNode;
LONG lpChildLength;   //兄弟节点个数
}CATALOGNODE;释放函数我是用递归实现的。
void CInfoShareXCAPXMLParser::ReleaseCatalogNode(CATALOGNODE *pChildNode)
{
int i;
i = 0;
while (i<= (pChildNode + i)->lpChildLength)
{
if (NULL != (pChildNode + i)->pCatalogNode)
{
ReleaseCatalogNode((pChildNode + i)->pCatalogNode); }

if (NULL != (pChildNode +i)->pwzCatalogID)
{
delete[] (pChildNode +i)->pwzCatalogID;   
(pChildNode +i)->pwzCatalogID = NULL;
} if (NULL != (pChildNode + i)->pwzCatalogName)
{
delete[] (pChildNode)->pwzCatalogName;  
(pChildNode + i)->pwzCatalogName = NULL;
}
if (i == (pChildNode + i)->lpChildLength)
{
delete[](pChildNode);
//pChildNode = NULL;
}
i++;
}
 }程序运行到最里面的子节点就死了,帮我看看问题出在哪里?