关于内存泄漏的概念,这里做一些阐述。
如果在一个程序中,使用了new后没有delete,将会发生什么情况呢?如果没有调用delete,则即使包含指针的内存由于作用域规则和对象生命周期的原因而被释放,在自由存储空间上动态分配的变量或者结构也将继续存在。实际上,将会无法访问自由存储空间中的结构,因为只想这些内存的指针无效。这就导致了内存泄漏。
那么内存泄漏会导致什么情况呢?被泄露的内存将会在程序的整个生命周期内都不可使用,这些内存被分配出去,但是无法收回。极端情况是,内存泄漏可能会非常严重,以至于应用程序可用的内存被耗尽,出现内存耗尽错误。