Нет, не проверять на ноль.Стандарт гласит, что delete (T*)0;
действует.Это просто усложнит ваш код без каких-либо преимуществ.Если operator delete
перегружен, то лучше проверять на нуль в реализации оператора.Просто сохраняет строки кода и ошибки.
РЕДАКТИРОВАТЬ: Этот ответ был принят и проголосовал, но, на мой взгляд, он был не очень информативным.Здесь есть один недостающий фрагмент во всех ответах, и, ради совести, позвольте мне добавить этот последний фрагмент здесь.
Стандарт фактически говорит в [basic.stc.dynamic], по крайней мере, начиная с C ++ 03:
Любые функции выделения и / или освобождения, определенные в программе на C ++, включая версии по умолчанию в библиотеке, должны соответствовать семантике, указанной в 3.7.4.1 и 3.7.4.2.
Там, где упомянутые разделы, а также некоторые другие места в стандарте, перечисленные в других ответах, говорят, что семантика передачи нулевого указателя не допускается.