Skip to main content

内存泄漏(Memory Leak)

是计算机科学中的一种资源泄漏,主因是计算机程序的记忆体管理失当,因而失去对一段已分配内存空间的控制,程序继续占用已不再使用的内存空间,或是记忆体所储存之物件无法透过执行程式码而存取,令内存资源空耗。

  • 后果:

内存泄漏会因为减少可用内存的数量从而降低计算机的性能。最终,在最糟糕的情况下,过多的可用内存被分配掉导致全部或部分设备停止正常工作,或者应用程序崩溃。

内存泄漏带来的后果可能是不严重的,有时甚至能够被常规的手段检测出来。在现代操作系统中,一个应用程序使用的常规内存在程序终止时被释放。这表示一个短暂运行的应用程序中的内存泄漏不会导致严重后果。

在以下情况,内存泄漏后果较严重:

  • 程序运行后置之不理,并且随着时间的流逝消耗越来越多的内存(比如服务器上的后台任务,尤其是嵌入式系统中的后台任务,这些任务可能被运行后很多年内都置之不理);
  • 新的内存被频繁地分配,比如当显示电脑游戏或动画视频画面时; 程序能够请求即使在程序终止之后也不会被释放的内存(比如共享内存);
  • 泄漏在操作系统内部发生;
  • 泄漏在系统关键驱动中发生;
  • 内存非常有限,比如在嵌入式系统或便携设备中;
  • 当运行于一个程序终止时内存并不自动释放内存的操作系统(比如AmigaOS)之上时。