In C++ it is easily possible to have a permanent memory leak - just allocate memory and don\'t release it:
new char; //permanent memory leak guaranteed
You can write unmanaged code in .NET if you wish, you have enclose your block of code with unsafe keyword, so if you are writing unsafe code are you not back to the problem of managing memory by yourself and if not get a memory leak?