首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
请你来回答一下什么是memory leak,也就是内存泄漏
[问答题]
请你来回答一下什么是memory leak,也就是内存泄漏
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(317)
分享
纠错
3个回答
添加回答
2
gapex
都明确问啥是Memory Leak?实例回答里为啥还说什么资源泄露,什么destructor 不是virtual
我认为内存泄露就是该释放的内存没释放,使内存无法被二次利用,出现的这种现象称为内存泄漏。
由于基址丢失,导致无法调用free释放
另外我觉得循环引用造成智能指针无法自动释放内存,也属于内存泄漏。使用者可能想要释放相互引用的对象,但是由于引用计数不清零而导致智能指针无法主动释放内存。首地址并未丢失,但是占用的内存也没有被释放,其实对象已经没有存在的必要了。
发表于 2020-05-17 15:57:37
回复(0)
0
offer工程师
将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。
发表于 2021-03-20 11:17:23
回复(1)
0
Assassin丶冷靖
内存泄漏(memory leak)是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。 内存泄漏的分类: 1. 堆内存泄漏 (Heap leak)。对内存指的是程序运行中根据需要分配通过malloc,realloc new等从堆中分配的一块内存,再是完成后必须通过调用对应的 free或者delete 删掉。如果程序的设计的错误导致这部分内存没有被释放,那么此后这块内存将不会被使用,就会产生Heap Leak. 2. 系统资源泄露(Resource Leak)。主要指程序使用系统分配的资源比如 Bitmap,handle ,SOCKET等没有使用相应的函数释放掉,导致系统资源的浪费,严重可导致系统效能降低,系统运行不稳定。 3. 没有将基类的析构函数定义为虚函数。当基类指针指向子类对象时,如果基类的析构函数不是virtual,那么子类的析构函数将不会被调用,子类的资源没有正确是释放,因此造成内存泄露。 都明确问啥是Memory Leak?实例回答里为啥还说什么资源泄露,什么destructor 不是virtual 我认为内存泄露就是该释放的内存没释放,使内存无法被二次利用,出现的这种现象称为内存泄漏。 由于基址丢失,导致无法调用free释放 另外我觉得循环引用造成智能指针无法自动释放内存,也属于内存泄漏。使用者可能想要释放相互引用的对象,但是由于引用计数不清零而导致智能指针无法主动释放内存。首地址并未丢失,但是占用的内存也没有被释放,其实对象已经没有存在的必要了。
编辑于 2020-09-04 10:10:47
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
上传者:
小小
难度:
3条回答
317收藏
1210浏览
热门推荐
相关试题
编程题 ,按照要求创建Java 应...
Java
评论
(1)
微型计算机有三种总线,他们分别是数...
编程基础
评论
(1)
计算机系统中用于管理硬件和软件资源...
编程基础
评论
(1)
市场与销售的区别在哪里?
市场营销
评论
(1)
说出3个获取用户需求的方法并简述其...
用户研究
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题