C语言野指针、内存泄漏、内存溢出的概念

野指针:释放指针所指向的内存空间,和指针无关

//在堆区分配100*sizeof(char)个字节的内存;
char *p=(char *)malloc(100*sizeof(char));
//在用完后释放内存
free(p);
//这时候指针p所指向的存空间被释放。
//但是这个时候p指针的值没有发生变化,然后所指的内存空间已经没有了意义。
//指针p成为了野指针。

//解决办法很简单如下:
p=NULL;

free(p);//这个时候程序出现问题,因为已经释放了。

//所以在释放内存之前,要先判断是否为NULL指针。
//在释放内存之后,要给指针赋NULL值,也只为了避免再次free程序出现问题。

内存泄漏:堆区的内存由程序员分配和释放,如果只分配没有释放,每次只浪费一个字节的话,数量多的话,系统内存也会被用完

char * p=(char *) malloc(100*sizeof(char));

//malloc、new都在堆区分配内存

p=(char *) malloc(10000*sizeof(char));
p=(char *) malloc(10000*sizeof(char));
p=(char *) malloc(10000*sizeof(char));
p=(char *) malloc(10000*sizeof(char));

//如果一直这样只分配不释放,内存早晚会用完。
//即内存泄漏

内存溢出:定义一个double类型的一个变量,编译器分配8个字节的内存,但是这时候内存空间只剩下4个字节的内存,不够分配,这时候成为内存溢出。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值