Оператор удаляет данные, выделенные с помощью оператора
New
Синтаксис
Использование
Delete buf
или
Delete[] buf
Параметры
buf
Указатель на область памяти, которая была выделена с
помощью
New или
New[].
Описание
Delete используется для уничтожения и освобождения памяти
объекта, созданного с помощью
New.
При удалении TYPE, его деструктор будет вызываться.
Delete
должна использоваться только с адресами, возвращенными из
New.
Версия массива
Delete, а именно
Delete[],
используется для уничтожения массива объектов, ранее созданного с помощью
New[].
Деструктор будет вызываться здесь также.
Delete должна использоваться с адресами, возвращенными из
New,
а
Delete[] из
New[].
Вы не можете смешивать и сочетать различные версии операторов.
После того, как память будет удалена,
buf указатель будет
указывать на недопустимую память. Неплохой идеей после использования
delete или
delete[]
будет установить указатель
buf в ноль (
0), в целях
защиты от последующего случайного использования кода, так как нулевые
указатели легче найти и отладить.
Пример
Type Rational
As Integer numerator, denominator
End Type
' Создать и инициализировать Rational, и
сохранить его адрес.
Dim p As Rational Ptr = New Rational(3, 4)
Print p->numerator & "/" & p->denominator
' Уничтожить rational и освободить память.
Delete p
' Установить указатель в нуль, чтобы защититься от
будущих обращений
p = 0
' Выделение памяти для 100 integers, и
сохранить адрес на первый integer в массиве.
Dim p As Integer Ptr = New Integer[100]
' Присвоить некоторые значения в массив целых чисел.
For i As Integer = 0 To 99
p[i] = i
Next
' Освободить весь массив целых чисел.
Delete[] p
' Установить указатель на нуль, чтобы защититься от
будущих обращений
p = 0
Различия диалектов
Отличия от QB
См. также