Operator Delete
Operator to delete data allocated with the New operator
Delete buf
buf
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.
Syntax
Usage
Delete buf
or
Delete[] bufParameters
buf
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
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
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