In de informatica is een geheugenlek (Engels: memory leak) een onnodig geheugengebruik door een computerprogramma, met name wanneer het computerprogramma niet meer gebruikte delen van het geheugen niet vrijgeeft.

Een programma kan geheugen reserveren, dat het dan kan gebruiken om gegevens in op te slaan. Wanneer het programma het geheugen niet meer nodig heeft, moet het dit gereserveerde geheugen weer vrijgeven. Op die manier kan het door andere programma's opnieuw gebruikt worden.

Een programma dat geheugenlekken vertoont, reserveert steeds meer geheugen zonder het weer vrij te geven. Naarmate dit proces vordert, moet het besturingssysteem virtueel geheugen inzetten, wat de werking van de computer vertraagt. Als vrijwel al het geheugen verbruikt is kan het programma en in sommige gevallen ook het besturingssysteem crashen.

C++ is een van de programmeertalen waarin de programmeur objecten van destructors kan voorzien. Hij hoeft dan na gebruik het geheugen niet meer expliciet vrij te geven.

Garbage collection, een eigenschap van talen als Lisp en Java, is een automatische vrijgave van niet meer benodigd geheugen.

Zie ook bewerken