* glibc detected * malloc(): memory corruption (fast): ***
This is the error I get when, in a multithreaded environment, I execute this portion of code:
/// Some declarations
typedef boost::shared_ptr<Object> ObjectPtr;
ObjectPtr getObject()
{
return ObjectPtr(new Object);
}
/// What is actually executed in a thread
void executeWork()
{
...
ObjectPtr object = getObject(); /* <--- Memory corruption here! */
...
}
Can you help me please?
I don’t know if this helps your specific problem, but it is sometimes desirable to use
make_sharedand avoid thenew.so:
Additionally, you could try
std::shared_ptrinstead ofboost::shared_ptr. They’re probably exactly the same, but maybe not? To use it via TR1, I believe you#include <tr1/memory>. I usually just use it via C++0x, in which case it’s#include <memory>and add-std=c++0xto your g++ flags.