内存泄漏原分析,内存泄漏的四种解决方案
new 未释放
虚析构函数与否
循环引用-智能指针
缓存机制没用的对象一直增长。
遇到内存泄漏:
- 如何判断有内存泄漏? htop/top -> 怀疑有内存泄漏 mtrace
- 如何判断在代码什么位置进行泄漏?
Linux下:
Valgrin内存泄漏检测原理分析:https://zhuanlan.zhihu.com/p/56538645
valgrind分析 或者gdb valgrind对于malloc出来用brk分配的内存检测不出来
- 简单的 new 未释放 , 通过valgrind直接检查到位置
- 多次引用计数,通过gdb p出来 指针的usecount里面的return 参数:
- gdb找引用计数,找到什么时候增加做记录
- 退出的时候是否释放掉,根据增加、释放的时候找
- 看数据结构-一层一层的往里面看
windows下:
CRT进行内存泄漏检测
__crtDumpMemeryLeack()
输出窗口找到内存块号{456}
__setBreak…()
设定内存块号
中止-栈帧调试
待更新…