delete operator

   
delete operator Deletes a dynamic object or array of objects

  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 operator  delete  (void* p) {   debug(p);   std::free(p); } int* p = new int; int* array = new int[10]; ...  delete  p;  delete[]  array; 

See Also

expression , new , Chapter 3, Chapter 5, <new>

   


C++ in a Nutshell
C++ in a Nutshell
ISBN: 059600298X
EAN: 2147483647
Year: 2005
Pages: 270
Authors: Ray Lischner

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net