美文网首页
[C指针]saferFree(void ** pp)

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

作者: AkuRinbu | 来源:发表于2019-04-09 18:26 被阅读0次

    学习笔记

    《深入理解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)
    • void类型表示任何类型,配合指针的指针,做到允许修改传入的指针(指针的值)
    • 先是调用内置的free函数free(*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);
    }
    

    参考资料

    相关文章

      网友评论

          本文标题:[C指针]saferFree(void ** pp)

          本文链接:https://www.haomeiwen.com/subject/ekbiiqtx.html