Kurz erklärt
Ein Speicherleck liegt vor, wenn ein Programm Speicher belegt und nach Gebrauch nicht wieder freigibt. Der Speicherverbrauch wächst unaufhörlich, bis das Programm langsam wird oder abstürzt.
Genauer
In Sprachen mit manueller Speicherverwaltung (C, C++) entsteht ein Leck, wenn man free/delete vergisst. Auch in Sprachen mit Garbage Collector sind Lecks möglich: Der GC räumt nur auf, was nicht mehr erreichbar ist. Hält eine vergessene Referenz ein Objekt fest, bleibt es im Speicher.