内存泄漏和内存溢出的区别
内存溢出 out of memory
指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
内存泄露 memory leak
是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
内存泄漏的分类:
1.对内存泄漏(malloc new之类的)
2.系统资源泄漏(使用的系统资源Bitap SOCKET之类的没有使用相应的函数释放掉)
3.没有将基类的析构函数定义为虚函数。
内存泄漏如何判断?
为了判断内存的泄漏,一方面可以使用Linux环境下的内存泄漏检查工具valgrind,另一方面在写代码时可以增加内存申请和释放的统计功能。看申请的和释放的是否一致来判断是否有内存泄漏的情况发生。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步