Delete

Share on Facebook Share on Twitter Email
Top

In the C++ programming language, the delete operator calls the destructor of the given argument, and returns memory allocated by new back to the heap[1]. A call to delete must be made for every call to new to avoid a memory leak. After calling delete the memory object pointed to is invalid and should no longer be used. Many programmers assign 0 (null pointer) to pointers after using delete to help minimize programming errors. Note, however, that deleting a null pointer has no effect (if the deallocation function is one supplied in the standard library[2]), so it is not necessary to check for a null pointer before calling delete.

Example code snippet:

int *p_var = 0;     // new pointer declared
p_var = new int;    // memory dynamically allocated
 
/* .......
other code
........*/
 
delete p_var;       // memory freed up
p_var = 0;          // pointer changed to 0 (null pointer)

Arrays allocated with new [] can be similarly deallocated with delete []:

int size = 10;
int *p_var = 0;          // new pointer declared
p_var = new int [size];  // memory dynamically allocated
 
/* .......
other code
........*/
 
delete [] p_var;         // memory freed up
p_var = 0;               // pointer changed to 0

Arrays, allocated with new[], must be deallocated with delete[], since the layout of arrays, allocated with new[] is implementation defined[citation needed], and possibly not compatible with new. For example, in order to properly perform object destruction at delete[], some implementations of new[] embed the number of allocated objects into the beginning of the allocated memory chunk, and return pointer to the remaining part of the array.[citation needed].

The delete operator (user defined) is different from operator delete. The delete operator may call operator delete to free up memory.

References

External links


Post a question - any question - to the WikiAnswers community:

Copyrights:

Mentioned in

Cosby, Philip (Quotes By)
purge (technology)
XL Delete row/column (technology)