hafıza sızıntısı. işletim sisteminden talep edilmiş ve kullanılmış bir bellek alanının işaretçisinin ya da referansının, o bellek alanı geri verilmeden
* başka bir yere işaret etmesi sonucu oluşur. bu durumda o bellek alanı hala süreç tarafından sahiplenilmesine rağmen, o bölgeyi gösteren herhangi bir işaretçi ortada yoktur. eğer programcı türlü aşmışlıklar yapmamışsa büyük ihtimalle kontrolsüz bir durum oluşturacaktır.
örneğin, çok güzel bir memory leak aşağıdadır:
int *intptr;
for(int i = 0; i < 100; i++)
{
intptr = new int[10];
}
intptr işaretçisi sürekli bellek alanı alıp, yeni bellek alanına işaret ediyor; fakat eski bellek alanı ne oluyor? işletim sisteminin iyi anına denk gelmişse ve tüm veri alanlarını ard arda vermişse durumu kurtarabiliriz, ama değilse, geçmiş olsun.
programların anormal (ve genellikle biriken) bellek kullanmasındaki kilit nedenlerden biri, fakat bu tür bir hatayı büyük projelerde bulmak çok zordur sanırım. çözüm ise, aldığımız belleği dikkatli bir şekilde geri vermeliyiz.