std::allocate_shared
| Defined in header <memory>
|
||
| template< class T, class Alloc, class... Args > shared_ptr<T> allocate_shared( const Alloc& alloc, Args... args ); |
(since C++11) | |
Constructs an object of type T and wraps it in a std::shared_ptr using args as the parameter list for the constructor of T.
All memory allocation is done using a copy of alloc, which satisfies the Allocator requirements. The copy constructor and the destructor of Alloc must not throw exceptions.
Contents |
[edit] Parameters
| alloc | - | The Allocator to use.
|
| args... | - | list of arguments with which an instance of T will be constructed.
|
[edit] Return value
std::shared_ptr of an instance of type T.
[edit] Exceptions
Can throw the exceptions thrown from Alloc::allocate() or from the constructor of T. If an exception is thrown, this function has no effect.
[edit] Notes
This function typically allocates memory for the T object and for the shared_ptr's control block with a single memory allocation (it is a non-binding requirement in the Standard). In contrast, the declaration std::shared_ptr<T> p(new T(Args...)) performs at least two memory allocations, which may incur unnecessary overhead.
A copy of alloc is stored as part of the control block so that it can be used to deallocate it once both shared and weak reference counts reach zero.
[edit] See also
constructs new shared_ptr (public member function) | |
| creates a shared pointer that manages a new object (function template) |