所谓野指针是指随机指向一块内存空间的指针,野指针导致的错误被称为内存泄漏,但这种错误不是每次都会发生,因为野指针是随机指向一块内存空间,当野指针恰好指向的一块内存空间是已经跟操作系统申请过地址的内存空间的话,就不会造成内存泄漏。造成野指针的原因是未对指针进行初始化,即指针没有指向,野指针可以通过养成良好的变成习惯来
加以避免,我们以一段编程代码来加以讲解。
#include <stdio.h>
//define NULL (void *) 0
int main()
{
// int num;
int *p = malloc(sizeof(int)); //在堆各空间中对指针变量p分配4个字节的空间,不采用
//int *p = malloc(sizeof(4));的方式是为了增加代码的移植性
if(p == NULL) //即习惯(3)
{
printf(“malloc error”);
exti(1); //该操作为退出该程序
}
memset(p,0,sizeof(int)); //即习惯(4)
scanf(“%d”,p);
free(p); //(5)
P = NULL; //(6)
Return 0;
}
避免野指针需养成以下良好的编程习惯
(1);将未初始化的指针置为空(NULL,NULL是宏定义,见上,代表内存0的地址,并
且NULL是不允许进行任何操作的),将未初始化的野指针置为空,并不能解决野
指针的问题,而是为了引起我们的注意,将不能对该指针指向的空间做操作。
(2):当要往一个指针指向的空间赋值的时候,一定要检查是否对这个指针分配了空间
(3):当给指针分配好空间以后,一定要检查是否成功的给指针分配了地址空间,即检查
指针是否仍为空
(4):分配成功之后,要将分配的空间初始化一下
(5):在所用的空间使用完之后要释放
(6):释放之后,再次将指针置为空