我正在使用Boost 1.39。我已经使用boost::flyweight<no_locking, hashed_factory<> >
实现了我的类(class)(我的应用程序是单线程的)。我类的测试程序通过得很好,但是当我在应用程序中使用时,我会惊慌
#9 0x08de7c3e in boost::flyweights::detail::refcounted_value<boost::flyweights::detail::default_value_policy<SharedFileAttr>::rep_type, SharedFileAttr>::release (this=0x0) at /usr/include/boost/flyweight/refcounted.hpp:89
#10 0x08de7517 in boost::flyweights::detail::refcounted_handle<boost::flyweights::detail::refcounted_value<boost::flyweights::detail::default_value_policy<SharedFileAttr>::rep_type, SharedFileAttr> const*, boost::flyweights::detail::flyweight_core_tracking_helper<boost::flyweights::detail::default_value_policy<SharedFileAttr>, mpl_::na, boost::flyweights::refcounted, boost::flyweights::hashed_factory<mpl_::na, mpl_::na, mpl_::na, 0>, boost::flyweights::no_locking, boost::flyweights::static_holder> >::~refcounted_handle (this=0xf32fe61c,
__in_chrg=<value optimized out>) at /usr/include/boost/flyweight/refcounted.hpp:131
#11 0x08e2edfe in boost::flyweights::flyweight<SharedFileAttr, boost::flyweights::no_locking, boost::flyweights::hashed_factory<mpl_::na, mpl_::na, mpl_::na, 0>, boost::parameter::void_, boost::parameter::void_, boost::parameter::void_>::operator= (this=0xf32fe7e4, x=...)
at /usr/include/boost/flyweight/flyweight.hpp:196
请注意,在第9帧中,该值为0x0
我不确定使用boost::flyweight的代码如何导致引用计数问题。毕竟,我的界面仅包含添加flyweight对象并销毁它们的方法。
我不知道如何解决这个问题。有任何想法吗?
最佳答案
好吧,令人尴尬,但是问题是试图将一个未初始化的flyweight对象分配给另一个对象。必须记住初始化所有类成员...
关于c++ - 加剧举重 panic ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11845805/