A memory leak is what you get when you hire a bronze medal special olympian onto your programming team.
Memory leaks are caused by a program's inability to free up memory (refer to my C++ tutorial to understand what a variable is. Speaking of which, I need to finish that). Most variables self terminate at the end of a function, but one (the new variable) requires a delete[] command to terminate. When a programmer fails to delete[] the variable at the end of it's use, you get a memory leak, because that variable is created over and over and over again but never freed up.
Say for example you're trying to make a weapon fire. You would write a function for WeaponFiringAssaultRifle, for example. In this function, you would create all of the data placeholders (variables) you need, and then proceed to work with them. But at the end of the function, you forget to delete[] them. Now you go ingame to test your work, and every time you fire the weapon, you're sapping precious memory.
That's just one example. There are countless more, and each sap memory at different paces due to their uses.
[/nerd]