There seem to be a lot of definitions of what a memory leak is.
A memory leak is when a program loses direct or indriect access to memory it has allocated for use. For example, if I had a program that asked for 4KB of memory space and assigned to a variable called 'leak' then asked for another 4KB of space and assigned it to leak, the original 4KB is effectively lost until the programs built in garbage collection runs, if the language has it, or it exits and it's memory space is cleaned out by windows.