Valgrind tests OK.  Apparently empty pointers need to be explicitly set to NULL to avoid conditional jump or move on uninitialized value errors.  Delete, however, can take a null pointer without issue.