Оператор Delete
 
Оператор удаляет данные, выделенные с помощью оператора New

Синтаксис

Declare Operator Delete ( buf As Any Ptr )
Declare Operator delete[] ( buf As Any Ptr )

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

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

Различия диалектов

  • Доступно только в диалекте -lang fb.

Отличия от QB

  • Новое в FreeBASIC

См. также