Smart pointers. It really makes a world of difference not having to explicitly memory-manage heap-allocated objects.
Obviously you still need to "know what you're doing", but in my experience it has decreased the number of memory-related bugs at least one order of magnitude in software I've worked with.