C++内存泄漏及解决办法

1.C++内存泄漏是什么?

  • 内存泄漏指的是由于疏忽或错误造成了程序未能释放掉不再使用的内存。

2.造成的后果

  • 性能不良,内存会耗尽

3.C++没有垃圾回收机制,我们需要关注那些类型的内存泄漏?

  • 堆内存泄漏。在内存中程序员手动分配的一块内存,malloc\realloc\new。完成相关操作后,没有调用相对应的free\delete释放掉内存,这时这块内存就会常驻内存,造成堆内存泄漏
  • 系统资源泄漏。分配给程序使用的资源没有使用相应函数释放,如bitmap\handle\socket.

4.内存泄漏排查

  • BoundsChecker,定位运行时发生的各种错误
  • 调试运行DEBUG版程序,运用以下技术:CRT(C run-time libraries)、运行时函数调用堆栈、内存泄漏时提示的内存分配序号(集成开发环境OUTPUT窗口),综合分析内存泄漏的原因,排除内存泄漏。
  • linux工具之检测内存泄漏-valgrind,功能强大,不仅仅是内存泄漏检测工具。

5.怎么有效解决内存泄漏问题?

  • 智能指针。因为智能指针可以自动删除分配的内存。智能指针和普通指针类似,只是不需要手动释放指针,而是通过智能指针自己管理内存的释放。关于智能指针见 next --.–。

你可能感兴趣的:(C++)