Hi everyone,

I've been investigating our program's memory usage, and one of the spots that I keep seeing the stack hitting its limit is when using boost::make_shared. 

I've written a simple test program, that completes fine when I use new... but fails with a stack overflow when I use boost::make_shared
========================
#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
using namespace std;
struct  arr
{
char arg[1024*1024];
};

struct test
{
struct arr array[1024];
};

int main()
{
test * myTest = new test(); //complete! 
if (!myTest)
cout << "new alloc failed";
boost::shared_ptr<test> testPtr = boost::make_shared<test>(); //fails with stack overflow!
if (!testPtr)
{
cout << "alloc failed;";
}
}
===========================

If you run this with a reasonable thread stack of 8 megabytes, it fails when using boost::make_shared.

Here is the stack trace..... 

#0  boost::shared_ptr<test>::shared_ptr<test, boost::detail::sp_ms_deleter<test> >(test*, boost::detail::sp_ms_deleter<test>) ()
#1  boost::shared_ptr<test> boost::make_shared<test>() ()
#2  main ()


Is there a reason this happens?




Thanks

michael