C语言 野指针与空指针

//野指针与空指针的区别

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

//野指针是指存在一个指针变量,但是这个指针变量指向的内存空间已经被释放,这时候指针的值还是不为空
//再次调用free()函数就会报错;空指针是值为NULL的指针变量

void main(){
    int *p = (int *)malloc(sizeof(int));
    *p = 20;
    ////不规范写法
    //if (p!=NULL)
    //{
    //    //第一次释放p指向的内存空间
    //    free(p);
    //    //此时的p变成野指针
    //}
    //if (p != NULL)
    //{
    //    //第二次释放p指向的内存空间,此时P是野指针,程序报错
    //    free(p);
    //}
    //正确的写法
    if (p != NULL)
    {
        //第一次释放p指向的内存空间
        free(p);
        //将P的值变成NULL
        p = NULL;
    }

    system("pause");
}
原文地址:https://www.cnblogs.com/zhanggaofeng/p/5274633.html