Operator Delete
Operator to delete data allocated with the `New` operator
Syntax
`
Declare Operator Delete ( buf As Any Ptr )
Declare Operator delete[] ( buf As Any Ptr )
`
Usage
`
Delete buf
or
Delete[] buf
`
Parameters
`buf`
A pointer to memory that has been allocated by `New` or `New[]` (a typed pointer must be provided in accordance to the data type to delete).
Description
`Delete` is used to destroy and free the memory of an object created with `New`. When deleting a TYPE, its destructor will be called. `Delete` should only be used with addresses returned from `New`.
The array version of `Delete`, `Delete[]`, is used to destroy an array of objects previously created with `New[]`. Destructors will be called here as well.
`Delete` must be used with addresses returned from `New`, and `Delete[]` with `New[]`. You cannot mix and match the different versions of the operators.
After the memory is deleted, the `buf` pointer will be pointing at invalid memory. Calling `Delete` twice on the same pointer value leads to undefined behaviour. It may be a good idea to set the `buf` pointer to null (`0`), in order to guard against later code using it accidentally, since null pointer dereferences are easier to find and debug.
Calling `Delete` on a null pointer induces no action.
Example
`
Type Rational
As Integer numerator, denominator
End Type
' Create and initialize a Rational, and store its address.
Dim p As Rational Ptr = New Rational(3, 4)
Print p->numerator & "/" & p->denominator
' Destroy the rational and give its memory back to the system.
Delete p
' Set the pointer to null to guard against future accesses
p = 0
`
`
' Allocate memory for 100 integers, store the address of the first one.
Dim p As Integer Ptr = New Integer[100]
' Assign some values to the integers in the array.
For i As Integer = 0 To 99
p[i] = i
Next
' Free the entire integer array.
Delete[] p
' Set the pointer to null to guard against future accesses
p = 0
`
Dialect Differences

- Only available in the -lang fb dialect.

Differences from QB

- New to FreeBASIC

See also

- `New`
- `Deallocate`