Geheugenlek
Een geheugenlek is een type programmeerfout waardoor een programma langzaam systeemgeheugen verbruikt totdat er niets meer over is. Een geheugenlek ontstaat langzaam, waardoor de computerprestaties geleidelijk achteruitgaan totdat het programma crasht of het volledige besturingssysteem vastloopt. Als je het programma dat verantwoordelijk is voor het lek afsluit, komt het systeemgeheugen vrij en wordt het probleem opgelost totdat het programma de volgende keer wordt uitgevoerd.
Geheugenlekken ontstaan wanneer een programma er niet in slaagt geheugen vrij te geven nadat het dit niet meer nodig heeft. Wanneer een programma een proces uitvoert, vraagt het systeem om een bepaalde hoeveelheid geheugen om dat proces uit te voeren. Nadat het proces is voltooid, moet het programma dat geheugen weer vrijgeven aan het systeem, zodat andere programma's het kunnen gebruiken. Als het programma niet de juiste functies bevat die geheugen vrijgeven (of als die functies niet correct worden gebruikt), houdt het dat geheugen in plaats daarvan voor onbepaalde tijd vast. Wanneer het programma dat proces later opnieuw uitvoert, vraagt het meer geheugen aan het systeem in plaats van het geheugen te gebruiken dat het al had toegewezen. Hierdoor neemt de hoeveelheid RAM die het gebruikt toe totdat het systeem niets meer over heeft voor andere functies.
Een programma dat last heeft van een geheugenlek blijft telkens wanneer het wordt uitgevoerd geheugen lekken totdat de fout is opgelost. Gelukkig bevatten software development kits vaak debuggers die de broncode van een programma kunnen controleren op geheugenlekken. Zodra de ontwikkelaar van het programma de fout vindt, kan die het programma bijwerken en een patch uitbrengen.
NOTE: Sommige programmeertalen, zoals Java en Python, gebruiken een techniek voor geheugenbeheer die "garbage collection" wordt genoemd. Deze maakt automatisch geheugen opnieuw vrij en kan veel (maar niet alle) fouten met geheugenlekken oplossen.
Test je kennis