Operator to delete data allocated with the
New operator
Syntax
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
Differences from QB
See also