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]; ...delete
p;delete[]
array;
Get C++ In a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.