急:结构体中套结构体的指针数组内存释放问题

JJZHK 2007-05-28 04:37:59
结构体定义:
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++;
}
}

程序运行到最里面的子节点就死了,帮我看看问题出在哪里?
...全文
401 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
JJZHK 2007-07-09
  • 打赏
  • 举报
回复
回答的很好
kantonwang2007 2007-05-28
  • 打赏
  • 举报
回复
递归函数很危险的,很容死循环的,估计是没有退出的条件,慎用。
guxingfeiyu 2007-05-28
  • 打赏
  • 举报
回复
pChildNode 有效吗?没有判断很危险的

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧