C语言动态内存分配
有一个问题:free释放时参数能不是头部吗?
好像不能,据说分配时分配的信息在头部之前的一段空间内,所以释放时必须规范。
规范的意思是,malloc使用时有一个注意事项是必须保存下来,
另外双重释放会导致致命的段错误,只有空指针不会收到多次释放的影响。基本上定义置空,分配后判空,使用时保存,释放后要置空。
为什么会有这个问题呢,原因是见过一个函数内部,用一个不上的哑节点作为动态分配的链表头的前驱节点,返回值是哑节点的后继节点,若哑结点是函数局部变量还好,但若是动态分配,岂不是白白丢失了一个节点空间,使得其沦为“野指针”。所以哑指针虽方便但处理释放过程很麻烦。
浙公网安备 33010602011771号