内存泄漏(memory leak)是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。
内存泄漏的分类:
\1. 堆内存泄漏 (Heap leak)。对内存指的是程序运行中根据需要分配通过malloc,realloc new等从堆中分配的一块内存,再是完成后必须通过调用对应的 free或者delete 删掉。如果程序的设计的错误导致这部分内存没有被释放,那么此后这块内存将不会被使用,就会产生Heap Leak.
\2. 系统资源泄露(Resource Leak)。主要指程序使用系统分配的资源比如 Bitmap,handle ,SOCKET等没有使用相应的函数释放掉,导致系统资源的浪费,严重可导致系统效能降低,系统运行不稳定。
\3. 没有将基类的析构函数定义为虚函数。当基类指针指向子类对象时,如果基类的析构函数不是virtual,那么子类的析构函数将不会被调用,子类的资源没有正确是释放,因此造成内存泄露。
本文向大家介绍请你回答一下如何判断内存泄漏?相关面试题,主要包含被问及请你回答一下如何判断内存泄漏?时的应答技巧和注意事项,需要的朋友参考一下 内存泄漏通常是由于调用了malloc/new等内存申请的操作,但是缺少了对应的free/delete。为了判断内存是否泄露,我们一方面可以使用linux环境下的内存泄漏检查工具Valgrind,另一方面我们在写代码时可以添加内存申请和释放的统计功能,统计当
本文向大家介绍请你回答一下野指针是什么?相关面试题,主要包含被问及请你回答一下野指针是什么?时的应答技巧和注意事项,需要的朋友参考一下 野指针就是指向一个已删除的对象或者未申请访问受限内存区域的指针。
本文向大家介绍什么是内存泄漏?相关面试题,主要包含被问及什么是内存泄漏?时的应答技巧和注意事项,需要的朋友参考一下 答:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。
本文向大家介绍请你回答一下测试的相关流程是什么?相关面试题,主要包含被问及请你回答一下测试的相关流程是什么?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 测试最规范的过程如下 需求测试->概要设计测试->详细设计测试->单元测试->集成测试->系统测试->验收测试 来自W模型
本文向大家介绍请你回答一下智能指针有没有内存泄露的情况 ?相关面试题,主要包含被问及请你回答一下智能指针有没有内存泄露的情况 ?时的应答技巧和注意事项,需要的朋友参考一下 当两个对象相互使用一个shared_ptr成员变量指向对方,会造成循环引用,使引用计数失效,从而导致内存泄漏。例如: 上述代码中,parent有一个shared_ptr类型的成员指向孩子,而child也有一个shared_ptr
本文向大家介绍内存泄漏和内存溢出是什么?一般怎么处理内存泄漏?相关面试题,主要包含被问及内存泄漏和内存溢出是什么?一般怎么处理内存泄漏?时的应答技巧和注意事项,需要的朋友参考一下 (1)内存溢出(OOM)和内存泄露(对象无法被回收)的区别。 (2)引起内存泄露的原因 (3)内存泄露检测工具 ------>LeakCanary 内存溢出 out of memory:是指程序在申请内存时,没有足够的内