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) |