vfclists, manual memory management is easy in vast majority of cases. An object is owned by another object. The owner allocates and frees the memory.
Thinking the ownership structure through may even improve your code's design.
Garbage collection does not solve all memory related problems. Java has CG but there are thick books written about Java memory management. Why so, if GC takes care of it all?
Also GC does not fix uninitialized variables.
IMO garbage collection is overrated. If you however prefer it, fine, there are plenty of choices. All new fancy languages seem to have it.
Object Pascal is a nice compromise without GC, thus less overhead, but reference counted strings which then behave almost like native types (integer and such). Good.