自定义Free指针函数

发布于 2021-05-22  260 次阅读


在C语言中,通常是通过malloc函数分配堆内存,free函数释放堆内存。

堆内存的特性就是不连续,分配灵活,速度慢。

这是一个默认的分配堆内存语句:

point=(int*)malloc(sizeof(int));

可以看到,分配的内存地址保存在指针point中!

然后我们释放内存就需要free函数了:

free(point)

但是free函数是不够安全和完美的!


释放之后point指针并没有置空,需要手动置空。如果忘记置空和再次使用这个指针就会产生不可控的因素。

其实这种情况是可以避免的。可以通过自定义函数弥补默认free函数的缺点:

void sfree(void* *sf){
    free(*sf);
    *sf=NULL
}

自定义函数在free函数的基础上增加了自动指针置空功能,sfree是safe free单词的简写,寓意安全释放。

sfree函数有助于提高指针操纵内存的安全性和完美性。