野指针产生的原因

Posted Liu_Jing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了野指针产生的原因相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//野指针产生的原因
//指针变量和它所指向的内存空间变量是两个不同的概念
//释放了指针所指的内存空间 但是指针变量本身没有重置成null

//造成释放的时候 通过if(p1 != NULL)

//避免方法:1)定义指针的时候 初始化成null 2)释放指针所指向的内存空间后,把指针重置成null
int main(void)
{

char *p1 = NULL;
p1 = (char *)malloc(100);
if(p1 == NULL)
{
return ;
}
strcpy(p1, "11112222");

printf("p1:%s \n", p1);


if(p1 != NULL)
{
free(p1);
p1 = NULL;    //释放了指针所指的内存空间 但是指针变量本身没有重置成null
}
if(p1 != NULL)
{
free(p1);

}
return 0;
}

以上是关于野指针产生的原因的主要内容,如果未能解决你的问题,请参考以下文章

C 语言指针数据类型 ( 野指针 | 避免野指针推荐方案 )

野指针的学习

野指针就像野狗吗(指针详解1)

C语言知识分享:野指针!野指针怎么样产生的?又怎么避免呢?

面试题野指针的成因,危害以及避免方法?

野指针