[英]Memory corruption when using boost::shared_ptr in a multithreaded environment
*检测到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! */
...
}
你能帮我吗?
我不知道这是否对您的特定问题有所帮助,但有时最好使用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 ++标志中。
对象可能是一个问题。 如果将Object更改为int,会发生什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.