В языке программирования C++ оператор delete
возвращает память, выделенную оператором new
, обратно в кучу. Вызов delete
должен происходить для каждого вызова new
, чтобы избежать утечки памяти. После вызова delete
объект, указывающий на этот участок памяти, становится некорректным и не должен больше использоваться. Многие программисты присваивают 0 (нуль-указатель) указателям после использования delete
, чтобы минимизировать количество ошибок программирования. Удаление нуль-указателя фактически не имеет эффекта, так что нет необходимости проверять указатель на равенство 0 перед вызовом delete
(такая проверка входит в алгоритм оператора delete
).
Фрагмент кода в качестве примера:
int *p_var = nullptr; // объявление нового указателя
p_var = new int; // память динамически выделяется
/* .......
остальной код
........*/
delete p_var; // память освобождается
p_var = nullptr; // указатель заменяется на нуль-указатель
Массивы, созданные (выделенные) при помощи new []
, аналогичным образом могут быть уничтожены (освобождены) при помощи delete []
:
int size = 10;
int *p_var = nullptr; // объявление нового указателя
p_var = new int [size];// память динамически выделяется
/* .......
остальной код
........*/
delete [] p_var; // память освобождается
p_var = nullptr; // указатель заменяется на нуль-указатель
Вызов delete[]
для массива объектов приведет к вызову деструктора для каждого объекта перед освобождением памяти, выделенной под массив.
Замечание. Хотя в стандарте языка это не оговорено, некоторые компиляторы (например, C++ Builder) допускают после ключевого слова delete перечислять через запятую несколько указателей, однако освобождение памяти происходит только по первому указателю.
Это заготовка статьи о программировании. Вы можете помочь проекту, дополнив её. |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .