That is not a correct definition of memory leak as it is commonly used in the sfotware industry. Due to the way that the OS insulates itself, it is actually quite difficult to design a program that will retain memory once the process has been terminated (where "memory" above does not refer permanent or semi-permanent storage such as hard drives, CF cards, USB sticks, etc).
A memory leak is simply an allocation of memory that you cannot (easily) get back.
This, for example, is a (trivial and short-lived) memory leak (assuming no garbage collector):
void LeakyLeak()
{
int *pnGoodByeCruelWorld = malloc(1);
pnGoodByeCruelWorld = 5; // At this point you will have a hard time freeing the original memory since the address is lost
}