C语言 避免野指针!!!

想要避免野指针,首先要知道什么是野指针?

野指针就是随机指向内存中一块内存。野指针可能导致内存泄漏,在指向不可访问的内存或已经释放的内存的时候,就会出现段错误,也就是内存错误。


如何避免野指针?

1在定义指针时,初始化为空。同样在释放指针后,也有将指针指向NULL。

NULL 是个宏,指向0地址,0地址是不允许访问和操作的!

#define NULL (void *)0

指向NULL可以提醒程序员不能对它进行操作。有提醒作用!还有就是如果有段错误,有利于调试。


2当对野指针进行赋值操作时,判断地址是否合法。

可以用if(NULL != p)判断,也可以用assert(NULL != p) ,assert是个宏,当括号里条件不满足时,程序终止并提示出错


例:

#include <stdio.h>

#include <stdlib.h>


#define MAX_SIZE sizeof(char) * 100


int main()

{

char *ptr = (char *)malloc(MAX_SIZE);//分配空间

if(NULL == ptr)                                         //判断是否分配成功

{

printf("malloc error!\n");

exit(1);

}

memset(ptr,0,MAX_SIZE);                    //使用前初始化

scanf("%s",ptr);

printf("pyr = %s\n",ptr);

free(ptr);                                                  //分配后要释放

ptr = NULL;                                             //释放后要赋空


return 0;

}


一个在努力中的未来程序员,如果有更好的想法,欢迎评论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值