美文网首页
[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)

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

  • 第五章 指针与数组

    5.1 指针与地址 指针是保存变量地址的变量。 ANSI C使用void*(指向void的指针)代替 char* ...

  • void 和 void*

    void指针是什么? void指针一般被称为通用指针或泛指针,它是C关于“纯粹地址(raw address)”的一...

  • C++ 指针 void类型指针

    注意:本文中代码均使用 Qt 开发编译环境关于指针:(1)指针的类型是他所指向的变量的类型,而不是指针本身数据值的...

  • 初学C语言

    初学C语言——指针与数组的关系 #include void hq(int * q); void zhj(int ...

  • __bridge的作用

    将OC指针与C语言中指针(或者void *)相互转换。 OC指针与void *不能直接相互转化,涉及到OC中对象的...

  • nil/Nil/NSNull

    参考文章:nil/Nil/NSNull NULL:C类型的指针(void *),指针变量,空指针。 nil:是一个...

  • id 和void *

    1. 指针类型 id是指向Objective-C对象的指针。 void *是任何东西的指针(无类型指针)。是“对...

  • void指针

    1、void型指针 表示这个指针指向的内存中的数据的类型要由用户来指定。比如内存分配函数malloc函数返回...

  • NULL,nullptr,null,nil,Nil,NSNull

    NULL:一般指的是C语言里指向基本数据类型以及C类型的空指针,表示空指针((void*)0)或是0,C++里NU...

网友评论

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

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