When people are afraid that they'll forget the delete call for standard C++ objects they create, they often use smart pointers to prevent memory leaks. TSharedPtr is a very useful C++ class that will make any custom C++ object reference-counted—with the exception of UObject derivatives, which are already reference-counted. An alternate class, TWeakPtr, is also provided for pointing to a reference-counted object with the strange property of being unable to prevent deletion (hence, weak):
UObject and its derivative classes (anything created with NewObject or ConstructObject) cannot use TSharedPtr!