- delete (C++)
-
Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей.В языке программирования C++ оператор
delete
возвращает память, выделенную операторомnew
, обратно в кучу. Вызовdelete
должен происходить для каждого вызоваnew
, чтобы избежать утечки памяти. После вызоваdelete
объект, указывающий на этот участок памяти, становится некорректным и не должен больше использоваться. Многие программисты присваивают 0 (нуль-указатель) указателям после использованияdelete
, чтобы минимизировать количество ошибок программирования. Однако нужно отметить, что удаление нуль-указателя фактически не имеет эффекта, так что нет необходимости проверять нуль-указатель перед вызовомdelete
.Фрагмент кода в качестве примера:
int *p_var = NULL; // объявление нового указателя p_var = new int; // память динамически выделяется /* ....... остальной код ........*/ delete p_var; // память освобождается p_var = NULL; // указатель заменяется на 0 (нуль-указатель)
Массивы, созданные (выделенные) при помощи
new []
, аналогичным образом могут быть уничтожены (оcвобождены) при помощиdelete []
:int size = 10; int *p_var = NULL; // объявление нового указателя p_var = new int [size];// память динамически выделяется /* ....... остальной код ........*/ delete [] p_var; // память освобождается p_var = NULL; // указатель заменяется на 0 (нуль-указатель)
Вызов
delete[]
для массива объектов приведет к вызову деструктора для каждого объекта перед освобождением памяти, выделенной под массив.См. также
Ссылки
- Описание оператора delete в документации от IBM (англ.)
- Описание оператора delete применительно к Microsoft Visual Studio (англ.)
Категория:- C++
Wikimedia Foundation. 2010.