Dynamic memory management
From cppreference.com
                    
                                        
                    < cpp
                    
                                                            
                    
Contents | 
[edit] Smart pointers
Smart pointers enable automatic, exception-safe, object lifetime management.
|   Defined in header  
<memory>  | 
|
 Pointer categories | 
|
|    (C++11) 
 | 
   smart pointer with unique object ownership semantics   (class template)  | 
|    (C++11) 
 | 
   smart pointer with shared object ownership semantics   (class template)  | 
|    (C++11) 
 | 
   weak reference to an object managed by std::shared_ptr   (class template)  | 
|    (until C++17) 
 | 
   smart pointer with strict object ownership semantics   (class template)  | 
 Helper classes | 
|
|    (C++11) 
 | 
   provides mixed-type owner-based ordering of shared and weak pointers   (class template)  | 
|    (C++11) 
 | 
   allows an object to create a shared_ptr referring to itself  (class template)  | 
|    (C++11) 
 | 
   exception thrown when accessing a weak_ptr which refers to already destroyed object  (class)  | 
|    (C++11) 
 | 
   default deleter for unique_ptr  (class template)  | 
[edit] Allocators
Allocators are class templates encapsulating memory allocation strategy. This allows generic containers to decouple memory management from the data itself.
|   Defined in header  
<memory>  | 
|
|    the default allocator   (class template)  | 
|
|    (C++11) 
 | 
   provides information about allocator types   (class template)  | 
|    (C++11) 
 | 
   tag type used to select allocator-aware constructor overloads  (class)  | 
|    (C++11) 
 | 
   an object of type std::allocator_arg_t used to select allocator-aware constructors  (constant)  | 
|    (C++11) 
 | 
   checks if the specified type supports uses-allocator construction   (class template)  | 
|   Defined in header  
<scoped_allocator>  | 
|
|    (C++11) 
 | 
   implements multi-level allocator for multi-level containers   (class template)  | 
[edit] Uninitialized storage
Several utilities are provided to create and access raw storage
|   Defined in header  
<memory>  | 
|
|    copies a range of objects to an uninitialized area of memory  (function template)  | 
|
|    (C++11) 
 | 
   copies a number of objects to an uninitialized area of memory   (function template)  | 
|    copies an object to an uninitialized area of memory  (function template)  | 
|
|    copies an object to an uninitialized area of memory  (function template)  | 
|
|    an iterator that allows standard algorithms to store results in uninitialized memory  (class template)  | 
|
|    obtains uninitialized storage   (function template)  | 
|
|    frees uninitialized storage   (function template)  | 
|
[edit] Garbage collector support
|   Defined in header  
<memory>  | 
|
|    (C++11) 
 | 
   declares that an object can not be recycled    (function)  | 
|    (C++11) 
 | 
   declares that an object can be recycled   (function template)  | 
|    (C++11) 
 | 
   declares that a memory area does not contain traceable pointers   (function)  | 
|    (C++11) 
 | 
   cancels the effect of std::declare_no_pointers   (function)  | 
|    (C++11) 
 | 
   lists pointer safety models   (class)  | 
|    (C++11) 
 | 
   returns the current pointer safety model   (function)  | 
[edit] Miscellaneous
|   Defined in header  
<memory>  | 
|
|    (C++11) 
 | 
   provides information about pointer-like types   (class template)  | 
|    (C++11) 
 | 
   obtains actual address of an object, even if the & operator is overloaded   (function template)  | 
|    (C++11) 
 | 
   aligns a pointer in a buffer   (function)  | 
[edit] C-style memory management
Includes e.g. std::malloc, std::free
[edit] Low level memory management
Includes e.g. operator new ,  operator delete , std::set_new_handler