Поделиться через


Оператор delete (C++)

Отменяет выделение блока памяти.

[::] delete cast-expression
[::] delete [ ] cast-expression

Заметки

Аргумент выражение-приведения-типа должен быть указателем на блок памяти, ранее выделенный объекту, созданному при помощи оператора new. Оператор delete создает результат типа void и не возвращает значения. Например:

CDialog* MyDialog = new CDialog;
// use MyDialog
delete MyDialog;

Использование оператора delete на указателе на объект, который не был создан при помощи оператора new, создает непрогнозируемый результат. Однако можно оператор delete может использоваться на указателе со значением 0. Это означает, что, если оператор new возвращает 0 при сбое, то результат такой операции new можно удалить без опасных последствий. Дополнительные сведения см. в разделе Операторы new и delete.

Операторы new и delete могут также использоваться для встроенных типов, включая массивы. Если указатель (параметр pointer) относится к массиву, то перед эти параметром pointer ставятся пустые скобки:

int* set = new int[100];
//use set[]
delete [] set;

При использовании оператора delete на объекте отменяется выделение памяти. Программа, которая разыменовывает указатель после удаления объекта, может создать непрогнозируемый результат или вызвать сбой.

Если оператор delete используется для отмены выделения памяти объекту класса C++, то перед отменой выделения памяти объекта вызывается деструктор этого объекта (если у объекта имеется деструктор).

Если операнд оператора удалить представляет собой изменяемое l-значение, то после удаления объекта его значение будет не определено.

Пример

Примеры использования оператора delete см. в разделе оператор new.

См. также

Ссылки

Выражения с унарными операторами

Ключевые слова в C++

Принцип работы delete

Использование оператора delete

Операторы new и delete

Функция operator delete