C++ Memory Library - allocate_shared



Description

It allocates memory for an object of type T using alloc and constructs it passing args to its constructor. The function returns an object of type shared_ptr that owns and stores a pointer to the constructed object.

Declaration

Following is the declaration for std::allocate_shared.

template <class T, class Alloc, class... Args>
  shared_ptr<T> allocate_shared (const Alloc& alloc, Args&&... args);

C++11

template <class T, class Alloc, class... Args>
  shared_ptr<T> allocate_shared (const Alloc& alloc, Args&&... args);

Parameters

  • args − It is an allocator object.

  • alloc − It is a list of zero or more types.

Return Value

It returns a shared_ptr object.

Exceptions

noexcep − It doesn't throw any exceptions.

Example

In below example explains about std::allocate_shared.

#include <iostream>
#include <memory>

int main () {
   std::allocator<int> alloc;    
   std::default_delete<int> del; 

   std::shared_ptr<int> foo = std::allocate_shared<int> (alloc,100);

   auto bar = std::allocate_shared<int> (alloc,200);

   auto baz = std::allocate_shared<std::pair<int,int>> (alloc,300,400);

   std::cout << "*foo: " << *foo << '\n';
   std::cout << "*bar: " << *bar << '\n';
   std::cout << "*baz: " << baz->first << ' ' << baz->second << '\n';

   return 0;
}

Let us compile and run the above program, this will produce the following result −

*foo: 100
*bar: 200
*baz: 300 400
memory.htm
Advertisements