Нет, вам не нужно проверять NULL
.
delete
заботится, если передается указатель NULL
.
delete myObject;
myObject = NULL;
достаточно.
В качестве общей политики избегайте использования свободных хранилищ везде, где можете, и если вам необходимо использовать Умные указатели ( RAII ) вместо необработанных указателей.
C ++ 03 Стандартный раздел § 3.7.3.2.3:
Значение первого аргумента, предоставленного одной из функций освобождения, предоставляемых в стандартной библиотеке, может быть значением нулевого указателя; если это так, вызов функции освобождения не имеет никакого эффекта . В противном случае значение, предоставленное оператору delete (void *) в стандартной библиотеке, должно быть одним из значений, возвращаемых предыдущим вызовом либо оператора new (size_t), либо оператора new (size_t, const std :: nothrow_t &) в стандартной библиотеке и значение, предоставленное оператору delete в стандартной библиотеке, должно быть одним из значений, возвращаемых предыдущим вызовом оператора new или оператора new [] (size_t, const std :: nothrow_t &) в стандартной библиотеке.