c语言知识回顾

133 阅读2分钟

1.1内存泄露概念:

分配的动态内存,在使用完成后,没有被释放,导致该内存单元一直处于被占用状态,造成系统内存的浪费。

1.2内存泄露带来的影响、内存泄露场景以及解决方案:

影响:

1.使得程序卡顿

2.过多的内存泄露会导致程序崩溃

场景示例:(指针类型的变量在重新赋值前没有被释放):

int *a=(int *)malloc(sizeof(int)); //声明一个int型指针a,然后申请1个int型大小的区域(不一定是连续的区域,大部情况是链式区域),把这个内存区域的首地址赋值给指针变量a

int *b=(int *)malloc(sizeof(int)) ; //同上变量名是b

a=b ; //把b复制给a,

解释:执行上面三行代码,此时a指向的内存地址就是b所指向的内存地址,但是a原来指向的内存地址,因为没有被释放所以就导致了内存泄露。

解决办法:还是上述代码,只需要在给a重新赋值前加上free(a),这个时候是告诉操作系统这块内存可以重新被系统使用,但是值任然是存在的,还需要加一个a=NULL,这个是把指针指向空,这个时候a就没有指向了,这块内存就变成了最开始的样子,修改后为:

int *a=(int *)malloc(sizeof(int));

int *b=(int *)malloc(sizeof(int)) ;

a=NULL;

free(a);

a=b ; 详细可以看下这篇文章:c.biancheng.net/view/385.ht…

1.3内存检测工具 可以看下这篇文章:gitee.com/baidu/BRPC/… ———————————————— 版权声明:本文为CSDN博主「喵不猫-」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/c1719561053…