Ignoring unsafe code, .NET cannot have memory leaks. I\'ve read this endlessly from many experts and I believe it. However, I do not understand why this is so.
It is
Due to garbage collection, you can't have regular memory leaks (aside from special cases such as unsafe code and P/Invoke). However, you can certainly unintentionally keep a reference alive forever, which effectively leaks memory.
edit
The best example I've seen so far of a genuine leak is the event handler += mistake.
edit
See below for an explanation of the mistake, and of the conditions under which it qualifies as a genuine leak as opposed to an almost-genuine leak.