Hi All

I am testing my class using boost.  The class has a shared_memory_object  member :

class X

{

                char* m_buffer;

               boost::interprocess::shared_memory_object *m_sram;

               public X(char *name)

               {

                   m_buffer = (char*)malloc(128);

                   m_sram   = new(std::nothrow) boost::interprocess::shared_memory_object(boost::interprocess::open_or_create_t,

                                                                 name,

                                                                boost::interprocess::mode_t::read_write);

 

               }

}

 

int main()

{

    std::vector<X*> xlist;

    for(int i=0;i<1500;i++)

    {

        std::string name = std::to_string(i);

        X *x = new(std::nothrow) (name.c_str());

        xlist.push_back(x);

 

    }

    return 0;

}

I test the class in Window 10 using MinGW 32bit compiler.

 

g++ (MinGW.org GCC-8.2.0-3) 8.2.0

Copyright (C) 2018 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

I find that I only can create 1463 X objects.

1464th object will throw exception:

Dynamic exception type: boost::interprocess::interprocess_exception

std::exception::what: WinApi FormatMessage returned error.

 

Why this limitation?