c语言指针回顾——指针常见错误

这篇博客主要总结一下我在使用指针的时候遇到过的各种错误

野指针

指针变量创建的时候如果没有初始化,这个时候指针变量的值是一个随机值,这个时候通过这个指针访问内存是很危险的,请看下面的代码:

#include <stdio.h>
void main(int argc, char**argv)
{
	int *p;//声明一个指针变量
	*p = 4;//访问指针存放的地址,在那个地址中写入4
}

还有一种情况是本来对一块内存是有访问权限的,但是后面没了,如果再去访问的话就会出问题,请看下面的代码:

#include <stdio.h>
#include <stdlib.h>
void main(int argc, char**argv)
{
	int *p = (int*)malloc(sizeof(int));
        *p = 1;
	if(p)
	{
		free(p);
	}
	*p = 2;
}

动态分配一块内存后再将它释放,此时p的值依旧是存在的,只是用了free函数后,那一块内存被清空了,读写权限也没了,这时候的p也可算是野指针,通过p访问内存就会报错。

内存泄露

操作系统是不会帮你释放动态分配的内存的,如果没有手动去释放,那么就会造成内存泄漏,容易造成系统卡顿。

目前我碰到的错误主要是这些,后面遇到其它错误会更新。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值