野指针的那些事

    所谓野指针是指随机指向一块内存空间的指针,野指针导致的错误被称为内存泄漏,但这种错误不是每次都会发生,因为野指针是随机指向一块内存空间,当野指针恰好指向的一块内存空间是已经跟操作系统申请过地址的内存空间的话,就不会造成内存泄漏。造成野指针的原因是未对指针进行初始化,即指针没有指向,野指针可以通过养成良好的变成习惯来

加以避免,我们以一段编程代码来加以讲解。

 

#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);将未初始化的指针置为空(NULLNULL是宏定义,见上,代表内存0的地址,并  

      NULL是不允许进行任何操作的),将未初始化的野指针置为空,并不能解决野

      指针的问题,而是为了引起我们的注意,将不能对该指针指向的空间做操作。

(2):当要往一个指针指向的空间赋值的时候,一定要检查是否对这个指针分配了空间

(3):当给指针分配好空间以后,一定要检查是否成功的给指针分配了地址空间,即检查

       指针是否仍为空

(4):分配成功之后,要将分配的空间初始化一下

(5):在所用的空间使用完之后要释放

(6):释放之后,再次将指针置为空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值