King_Robot 2016-10-14 09:57 采纳率: 0%
浏览 1212

关于《数据结构与算法分析 C语言描述》中删除表的一个问题?

以下程序是书中给出的删除表的方法

void DeleteList(List L)
{
    Position P, Tmp;

    P = L->Next;/*Header assumed*/
    L->Next = NULL;
    while(P != NULL)
    {
        Tmp = P->Next;
        free(P);
        P = Tmp;
    }
}

为什么程序中表头 List L 不需要进行free呢?毕竟它也是指向了一个结构体元素。

  • 写回答

1条回答 默认 最新

  • LawsonLv 2016-10-14 11:26
    关注

    答:我的理解:List L是不可以free的
    1:free 是把指针指向的那块内存释放了,标记这块内存系统可以回收再用,指针还是存在的,仍然指向这块内存,不free L, 则L->next = null;
    如果free L, 这块内存在下一次会被利用重写,L->next地址就不一定在什么地方。
    2,free L, 并把 L = null应该是可以的,取决于你的这条指针还要不要继续使用。
    答案不一定正确,仅供参考!

    评论

报告相同问题?

悬赏问题

  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示