Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

Управление памятью

Все темы C++ Developer

Чем отличаются delete и delete[]? Что случится, если вызвать delete у объекта, созданного через new[]?

Отличия delete и delete[] :
  • delete: Используется для освобождения памяти, выделенной для одиночного объекта с помощью new.

    int* p = new int;
    delete p;
  • delete[]: Используется для освобождения памяти, выделенной для массива объектов с помощью new[].

    int* arr = new int[10];
    delete[] arr;
Использование delete вместо delete[] для объекта, созданного через new[] , приводит к неопределённому поведению. Это может вызвать:
  • Неполное освобождение памяти (утечка памяти).

  • Потенциальные ошибки выполнения или сбои программы.

Рекомендация:

Всегда использовать delete[] для освобождения памяти, выделенной с помощью new[], чтобы избежать неопределённого поведения и корректно освободить всю выделенную память.


Что такое memory leak?

Memory leak (утечка памяти) — это ситуация, когда программа выделяет память динамически (например, с помощью new или malloc), но не освобождает её (с помощью delete или free). В результате, используемая память остаётся занятой и недоступной для повторного использования, что может привести к исчерпанию доступной памяти и замедлению или краху программы.

Эта страница была полезной?