TGViewer
C/C++ | Вопросы собесов C/C++ | Вопросы собесов @easy_c_plus · 4.19K subscribers
Post #2482 617
🤔 Что будет если сделать delete для nullptr?

В C++ delete nullptr безопасен и не делает ничего. Стандарт гарантирует, что delete не вызывает ошибок при передаче nullptr.
int* p = nullptr;
delete p; // НИЧЕГО НЕ ПРОИЗОЙДЁТ (без ошибки)


🚩Почему `delete nullptr` не вызывает ошибку?

Стандарт C++ (C++98, C++11, C++17, C++20) говорит:
> Если переданный в delete указатель равен nullptr, то delete ничего не делает.
Это сделано, чтобы избежать избыточных проверок в коде:
if (ptr) { // Проверка не нужна
delete ptr;
}


🚩Как работает `delete` внутри?

Когда вызывается delete p, компилятор:
Проверяет, равен ли p nullptr. Если да → ничего не делает.
Вызывает деструктор объекта, если p не nullptr.
Освобождает память с помощью operator delete().

🚩Что с `delete[]`?

Тоже безопасно
int* arr = nullptr;
delete[] arr; // НИЧЕГО НЕ ПРОИЗОЙДЁТ


🚩Ошибки, которых `delete nullptr` помогает избежать

Безопасно
void destroy(int* p) {
delete p; // Даже если p == nullptr, ошибки не будет
}


Опасность: двойное удаление
Хотя delete nullptr безопасен, удаление уже освобождённого указателя — ошибка!
int* p = new int(10);
delete p; // Освободили память
delete p; // ❌ НЕСКОЛЬКО DELETE - неопределённое поведение (UB)!


Решение: после delete занулять указатель
int* p = new int(10);
delete p;
p = nullptr; // Теперь повторный delete безопасен
delete p; // ОК, ничего не делает


Ставь 👍 и забирай 📚 Базу знаний
  • 🔥 1
More from @easy_c_plus
  1. Oct 10, 2026🤔 Зачем нужен виртуальный деструктор? Виртуальный деструктор необходим, когда класс предп…
  2. Oct 10, 2026🤔 Что знаешь про гарантии безопасности исключений? Гарантии безопасности исключений (Exce…
  3. Oct 9, 2026🤔 Строгая гарантия безопасности Гарантии безопасности исключений в C++ делятся на три уро…
  4. Oct 8, 2026🤔 Выбрасывание исключения из конструктора — это нормально? Да, выбрасывание исключения из…
  5. Oct 8, 2026🤔 Какое преимущество у list перед vector? List обеспечивает быстрые вставки и удаления за…
  6. Oct 7, 2026🤔 Как работает priority_queue? priority_queue управляет элементами на основе их приоритет…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →