*检测到glibc * malloc():内存损坏(快速):***
这是我在多线程环境中执行此部分代码时遇到的错误:
/// 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! */
...
}
你能帮我吗?
答案 0 :(得分:6)
我不知道这是否有助于您解决具体问题,但有时需要使用make_shared
并避免使用new
。
这样:
return boost::make_shared<Object>(/* any arguments to constructor here */);
此外,您可以尝试std::shared_ptr
而不是boost::shared_ptr
。他们可能完全相同,但也许不是?要通过TR1使用它,我相信你#include <tr1/memory>
。我通常只是通过C ++ 0x使用它,在这种情况下它是#include <memory>
并将-std=c++0x
添加到你的g ++标志。
答案 1 :(得分:2)
这可能是Object的一个问题。如果将Object更改为int会发生什么?