с++: безопасное удаление указателей с последующим их обнулением

184
08 апреля 2022, 05:10

Подскажите в новых стандартах C++ не появились ли удаления указателей в 1 строчку, чтобы не писать код:

if (ptr != nullptr)
{
    delete ptr;
    ptr = nullptr;
}

или (если выделялся массив)

if (ptr != nullptr)
{
    delete [] ptr;
    ptr = nullptr;
}

может есть что-нибудь типа stl::one_line_delete(ptr) ?

Answer 1

Ну, если хотите

template<typename T>
void destroy(T*& p)
{
    delete p;
    p = nullptr;
}

Не вижу особой необходимости, не всегда же удаляется по переменной, но...

Кстати, проверка if (ptr != nullptr) избыточна.

READ ALSO
Установка GMP для Visual Studio [закрыт]

Установка GMP для Visual Studio [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме

119
Ошибка компиляции CMake Ubuntu

Ошибка компиляции CMake Ubuntu

Я собираю проект на Ubuntu, и у меня возникла проблема при обращении к библиотеке epoxylib

70
Удалить из строки первую цифру

Удалить из строки первую цифру

Программа переписывает из строки все буквы, пропуская цифрыА как сделать так, чтобы пропускалась только первая последовательность цифр?...

180
C++, что значит наследование enum class

C++, что значит наследование enum class

Рассмотрим следующий код:

181