NULL空指针解引用

NULL指针解引用

首先问大家一个问题就是,大家最开始使用函数(包含指针的函数),例如
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream),是否有做过一些处理判断?如果有就别往下看了,没有呢可以往下看看_
我个人是没有的。
但是我最近在上班的时候处理一些事情的时候发现,使用这类函数是需要对指针进行null检查的,叫检查null指针解引用
为什么?

什么是空指针解引用

C语言空指针的值为null,一般null指针指向进程的最小的地址,通常这个值为0.如果试图通过空指针对数据进行访问,会导致运行时的错误。当程序试图解引用一个期望非空但是实际为空的指针时,会发生空指针解引用错误。对于空指针解引用可能会导致程序异常终止或拒绝服务。如:再Linux系统中访问空指针会残生segmentation fault的错误。

危害

空指针解引用是C/C++程序中较为普遍的内存缺陷类型。当指针指向无效的地址并且对其引用时。可能产生不可预见的错误,导师软件系统崩溃。空指针引用缺陷可能导致系统崩溃、拒绝服务诸多严重后果 。

举例

void test(int *p)
{
	*p++;
	printf("%d\n",*p);
}
int main()
{
	int *p=getvalue();
	if(p==null)  //就是这一步,验证是否为空
	{
		printf("error:p is null\n");
	}
	test(p);//空指针解引用
}

注意

的是:验证是否为空的时候一定要起到效果,不要太早也不要太晚,一般在函数调用前使用。

本文是个人的见解,如果有误感谢大佬指点,欢迎讨论学习。

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值