[C指针]saferFree(void ** pp)

2019-04-09  本文已影响0人  AkuRinbu

学习笔记

《深入理解C指针》
http://www.ituring.com.cn/book/1147
第3章 指针与函数

源码解析

saferFree

void saferFree(void **pp) {
    if (pp != NULL && *pp != NULL) {
        free(*pp);
        *pp = NULL;
    }
}
SafeFree(void ** pp)

使用 safeFree 宏

#define safeFree(p) saferFree((void**)&(p))

#define safeFree(p) saferFree((void**)&(p))
#include <stdio.h>
#include <stdlib.h>

#define safeFree(p) saferFree((void**)&(p))

void saferFree(void** pp) {
    if (pp != NULL && *pp != NULL) {
        free(*pp);
        *pp = NULL;
    }
}

int main() {
    int* pi;
    pi = (int*)malloc(sizeof(int));
    *pi = 5;
    printf("Before: %p\n", pi);
    safeFree(pi);
    printf("After: %p\n", pi);
    safeFree(pi);
    return (EXIT_SUCCESS);
}

参考资料

上一篇下一篇

猜你喜欢

热点阅读