с++: безопасное удаление указателей с последующим их обнулением
Подскажите в новых стандартах C++ не появились ли удаления указателей в 1 строчку, чтобы не писать код:
if (ptr != nullptr)
{
delete ptr;
ptr = nullptr;
}
или (если выделялся массив)
if (ptr != nullptr)
{
delete [] ptr;
ptr = nullptr;
}
может есть что-нибудь типа stl::one_line_delete(ptr) ?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Ну, если хотите
template<typename T>
void destroy(T*& p)
{
delete p;
p = nullptr;
}
Не вижу особой необходимости, не всегда же удаляется по переменной, но...
Кстати, проверка if (ptr != nullptr) избыточна.