title: Difference in make_shared and normal shared_ptr in C++
body: <pre><code>std::shared_ptr&lt;Object&gt; p1 = std::make_shared&lt;Object&gt;("foo");
  std::shared_ptr&lt;Object&gt; p2(new Object("foo"));
  </code></pre>
  
  <p>Many google and stackoverflow posts are there on this, but I am not able to understand why <code>make_shared</code> is more efficient than directly using <code>shared_ptr</code>. </p>
  
  <p>Can someone explain me step by step sequence of objects created and operations done by both so that I will be able to understand how <code>make_shared</code> is efficient. I have given one example above for reference.</p>