AMDG Joost Meijles wrote:
Hi All,
I am trying to use the Boost Pool library, more specifically I am trying to use the singleton pool interface. Everything seems to work fine, till the moment I use it to create an object from a class containing a (STL) map, which results in a segmentation fault. Does anyone know why this happens, or how to work around it?
What I find also strange is that the constructor and destructor of the class doesn't seem to be called when using the pool. Is this normal behavior?
Yes. myPool::malloc does not initialize the MyClass. You need to do so explicitly. #include <vector> #include <map> #include <boost/pool/singleton_pool.hpp> using namespace std; class MyClass { public: int x; vector<int> y; map<int, int> z; }; int main() { typedef boost::singleton_pool<void, sizeof(MyClass)> myPool; MyClass * const t = (MyClass *) myPool::malloc(); new(t) MyClass; t->x = 1; t->y.push_back(2); t->z.insert(make_pair(3,3));//causes segmentation fault t->~MyClass(); myPool::purge_memory(); } In Christ, Steven Watanabe