You obviously have not spent enough long nights/weekends debugging memory leaks or memory corruption bugs ;-)
I programmed in C and C++ for well over a decade. Now I use C#. The very last thing I miss (with the possible exception of header files) is the need to do my own memory management. Why would you want that???
In my first real C# project, I did use pointers. I was working with low level, binary formatted data packets, and pointers seemed like the natural way to do it at the time. But I haven't used them since, I've never had the need. And I really didn't need them then. A memory stream would have worked. I just didn't have enough C# experience yet.
I love C# because it lets me concentrate on the problem I am trying to solve, not on problems (like memory management/object lifecycle stuff) that the tool can do for me. So I'm more productive. A LOT more productive. And my code has a LOT fewer bugs, because I never forget to free something (don't have to). And I never run off the end of a buffer with a pointer (can't, if you don't use pointers).
The only language I can think of that does what you want would be Managed C++. But...yuck....Managed C++ is just plain ugly. I can't imagine why anyone would want to use it except as a bridge between existing C++ code and C# (or other .NET language). Managed C++ is .NET's ugly stepchild.
Just because C# manages memory for you doesn't mean that you can be oblivious to all memory management issues. You need to know when you need to implement or call Dispose, for example. You need to know that you can't just accumulate referenced objects forever. I worked with a contractor once who supposedly knew what he was doing. He wrote code that, every 10 seconds, added new buttons to a form. Without removing any buttons from the form. That wasn't what he was supposed to be doing. He was supposed to be updating the text on the existing buttons if something had changed in the last 10 seconds. But he kept adding buttons. Eventually, the program would grind to a halt because of all those buttons. When I asked him what he was thinking...he said: I thought C# would take care of that. The garbage collector should fix it for me. No. It can't. All those buttons are on the form. They aren't visible, you put other buttons on top of them. But they are still there, still referenced, still needed. He didn't get why. He didn't last long. So...see...you still have to think about memory management in C#, just at a higher level than you do in C++.
ETA:
>> " developing an app that loads entire tables from a database onto the screen and then it doesnt need the data cramming up 2GB of memory anymore"
There's your problem right there. You can't load 2GB of data into memory in any programming language on any modern server without hitting huge performance bottlenecks. Why on Gods green earth would you load 2G of data into memory to display it on the screen??? Do you have a REALLY REALLY BIG screen? My screen can't hold anywhere close to 2GB of pixels. Can yours? Can anyone's?
Don't blame the programming language. Blame your own design. You can't bring in 2G of data from a database and expect it to work well. That's why we do paging. Humans can't digest 2GB of data, so why clutter up memory with it in the first place?
Dealing with really large datasets is hard, in any language. But trying to pull 2GB of data out of the server is just...INSANE?
What is it you are really trying to do? And why do you need 2G of memory to do it?