Although not explicitly documented, I expect different array allocator objects to behave independently of each other - each array allocator should manage its own storage. Allocating memory via one array allocator should not have any effect on the internal state of another array allocator object. What I saw in the header <ext/array_allocator.h> is that all array allocators for given types _Tp and _Array share the variable __array_used since it's declared static in array_allocator<>::allocate(). This causes interactions between array_allocator<> objects and additionally this is certainly not a thread-safe approach ! The attached test code throws std::bad_alloc while it should not throw any exceptions.
-- Summary: Array allocator use count is shared between array_allocator instances Product: gcc Version: 4.0.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bart dot vanassche at gmail dot com GCC build triplet: i586-suse-linux GCC host triplet: i586-suse-linux GCC target triplet: i586-suse-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26875