首先给出一个例子说明一下,以整型指针为例:
int *a1 = (int *)malloc( n * sizeof(int) );
我们要释放内存,在函数体中可以采用如下的方式:
if( a1 )
{
free( a1 );
a1 = NULL;
}
严格意义上来说,这三行代码都非常重要。当然你写成下面这样,在一般情况下是没有问题的,
free(a1);
然而它不能有效的避免当a1指针再次被使用时带来的麻烦,如这篇博文中提到的问题:http://blog.youkuaiyun.com/lmikic/article/details/51008592 。因此,本篇博文讨论的基础是在前一种释放条件下的。
显然,对于每个指针变量都用三条语句去释放,无形中增加了代码量,自然要将这些代码封装在一个函数中。从此处起,进入本篇博文的主旨。
对于一维整型指针,如前面提到的a1,我们编写如下的释放代码:
void my_free_1( int *p ) //释放一维指针
{
if( p )
{
free( p );
p = NULL;
}
}