读书人

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

发布时间: 2013-01-04 10:04:14 作者: rapoo

求教动态链表释放的问题
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;
}

读书人网 >C++

热点推荐