首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求教动态链表释放的有关问题

2013-01-04 
求教动态链表释放的问题while (p1-getgcv_buf ! 0)//如果获取到了gc_RcvBuf的值{n++if (n 1){head

求教动态链表释放的问题
while (p1->getgcv_buf != 0)//如果获取到了gc_RcvBuf的值
{
n++;
if (n == 1)
{
head = p1;//把p1所指的结点作为第一个结点
}
else
{
printf("the information of new node is :%s\n", p1->getgcv_buf); //输出每个结点的中的内容
p2->next = p1;//下一个结点的地址为新结点的地址
p2 = p1;
p1 = (struct RecvLink *)malloc(LEN);
p1->getgcv_buf = gc_RcvBuf;
}

这段代码该如何用free来释放?想了半天没头绪
[解决办法]

引用:
while (p1->getgcv_buf != 0)//如果获取到了gc_RcvBuf的值
{
n++;
if (n == 1)
{
head = p1;//把p1所指的结点作为第一个结点
}
else
{
printf("the information of new node is :%s\n", p1->getgcv_buf); //输出……


在循环外面delete(head)
[解决办法]

if (n == 1)
{
head = p1; //把p1所指的结点作为第一个结点
free(p1);
}
else
{
printf("the information of new node is :%s\n", p1->getgcv_buf); //输出每个结点的中的内容
p2->next = p1;//下一个结点的地址为新结点的地址
p2 = p1;
free(p1);  // ********* << 这里最好释放一次,否则容易报错,或者造成内存浪费。********//
p1 = (struct RecvLink *)malloc(LEN);
p1->getgcv_buf = gc_RcvBuf;
}

热点排行