看了很多文章,定位无非是这2种:
1. 查log。自己封装一个申请内存和释放内存的接口,这个接口打印固定格式的日志。然后在发生内存泄漏的时候可以查看这些日志是否打印,如果只打印了申请日志,没打印释放日志,说明这个地方发生内存泄漏。
2. Linux下使用工具valgrind排查
预防:
- 尽量不使用堆内存
- 养成良好的编码习惯,申请后记得释放
- 谁申请,谁释放
- 采用智能指针
- 采用stl。比如用vector而不是数组,用string而不是字符数组
- 采用RAII管理资源(利用构造/析构函数,在构造/析构的时候自动申请/释放内存)