Name
delete operator — Deletes a dynamic object or array of objects
Synopsis
delete-expr ::= [::] delete cast-expr | [::] delete "[" "]" cast-expr
The delete expression
destroys dynamically-allocated objects and frees their memory. A
scalar allocated with new must be
freed with delete. An array
allocated with new[] must be freed
with delete[]. Do not mix scalar
allocation or deallocation with array allocation or
deallocation.
It is safe to delete a null pointer; nothing will happen.
You can overload operator
delete and operator delete[] (as described in Chapter 5). Two global placement
operator delete functions are provided by the
standard library (see the <new> header); you can define
additional functions if you wish.
The first argument to operator delete is the pointer to the memory that
must be freed. Additional arguments can be used for placement delete operations, which cannot be used
directly but are matched with placement new operations if the new expression throws an exception.
Example
void operatordelete(void* p) { debug(p); std::free(p); } int* p = new int; int* array = new int[10]; ...deletep;delete[]array;