free함수로 메모리를 해제한 뒤 포인터값을 NULL로 지정하는 기능까지 추가하여 free 함수를 재정의한다.
[code]
#include <stdio.h>
void saferFree(void **pp)
{
if(pp != NULL && *pp != NULL)
{
free(*pp);
*pp = NULL;
}
}
#define safeFree(p) saferFree((void**)&(p))
int main()
{
int *p1;
p1 = (int *)malloc(sizeof(int));
*p1 = 5;
printf("Before: %p\n", p1);
safeFree(p1);
printf("After: %p\n", p1);
safeFree(p1);
return 0;
}
[/code]
[code]
#include <stdio.h>
void saferFree(void **pp)
{
if(pp != NULL && *pp != NULL)
{
free(*pp);
*pp = NULL;
}
}
#define safeFree(p) saferFree((void**)&(p))
int main()
{
int *p1;
p1 = (int *)malloc(sizeof(int));
*p1 = 5;
printf("Before: %p\n", p1);
safeFree(p1);
printf("After: %p\n", p1);
safeFree(p1);
return 0;
}
[/code]