longSir

流水不争先,争的是滔滔不绝

导航

C语言动态内存分配

有一个问题:free释放时参数能不是头部吗?

好像不能,据说分配时分配的信息在头部之前的一段空间内,所以释放时必须规范。

规范的意思是,malloc使用时有一个注意事项是必须保存下来,

       另外双重释放会导致致命的段错误,只有空指针不会收到多次释放的影响。基本上定义置空,分配后判空,使用时保存,释放后要置空。

为什么会有这个问题呢,原因是见过一个函数内部,用一个不上的哑节点作为动态分配的链表头的前驱节点,返回值是哑节点的后继节点,若哑结点是函数局部变量还好,但若是动态分配,岂不是白白丢失了一个节点空间,使得其沦为“野指针”。所以哑指针虽方便但处理释放过程很麻烦。

posted on 2024-02-02 10:14  tablong  阅读(5)  评论(0)    收藏  举报