什么是内存泄漏?如何避免?

内存泄漏(memory leak)是指由于疏忽或错误造成了程序未能释放掉不再使⽤的内存的情况。内存泄漏并⾮指内存
在物理上的消失,⽽是应⽤程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因⽽造成了内存的浪
费。可以使⽤Valgrind, mtrace进⾏内存泄漏检查。

有什么类别?
(1)堆内存泄漏 (Heap leak)
对内存指的是程序运⾏中根据需要分配通过malloc,realloc new等从堆中分配的⼀块内存,再是完成后必须通过调
⽤对应的 free或者 delete 删掉。如果程序的设计的错误导致这部分内存没有被释放,那么此后这块内存将不会被
使⽤,就会产⽣ Heap Leak.
(2)系统资源泄露(Resource Leak)
主要指程序使⽤系统分配的资源⽐如 Bitmap,handle ,SOCKET 等没有使⽤相应的函数释放掉,导致系统资源的浪
费,严᯿可导致系统效能降低,系统运⾏不稳定。
(3)没有将基类的析构函数定义为虚函数
当基类指针指向⼦类对象时,如果基类的析构函数不是 virtual,那么⼦类的析构函数将不会被调⽤,⼦类的资源没
有正确是释放,因此造成内存泄露

如何解决?
将内存的分配封装在类中,构造函数分配内存,析构函数释放内存;使⽤智能指针

posted @   陈浩辉  阅读(80)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
ヾ(≧O≦)〃嗷~
点击右上角即可分享
微信分享提示