C++ standard dictates that NULL / 0 / nullptr is a valid argument for
delete which then simply has no effect:
"The value of the first argument supplied to a deallocation function may
be a null pointer value; if so, and if the deallocation function is one
supplied in the standard library, the call has no effect."
I therefore think in these particular case it's safe to remove the ifs.