2016-11-22 18 views
-1

我在调用p_o-> p_order _-> somefunc()时遇到了segfault错误。我看着调试器,看到共享指针的计数器看起来很奇怪。它显示了共享PTR和弱PTR大COUTN负号数(这是我从来没有使用过)当智能指针显示负数usecount时,这意味着什么

p_o    @0x60c3331   Online::sptrOrder 
    data  @0x60c3331   Online::OrderMgr 
    p_order_ 0x20000000009b6b7 Online::Order * 
    id_   40     long 
    usecount -1602224128   int 
    weakcount 636599    int 
    px   1.99    double 
    is_fruit_ false    bool 
    size  10     long 

难道我误会这里介绍的或者是有事情一些奇怪的信息? 另外,我不太熟悉的调试器,但..没有缺少行

p_order_ 0x20000000009b6b7 Online::Order 

意味着指针p_order_的@address的(这是一个原始指针)是不是有效/无效,. 。?或者是0x20000000009b6b7某种地址?

+2

这意味着您的代码在某处存在错误,导致堆损坏。 –

+2

如果你想得到更多的答案而不是“某处已经堆积了堆”的话,请发布[mcve],这是我们可以用这些信息说的所有事情。 –

回答

-1

segfault和显然垃圾usecount值表明你的智能指针对象不是一个有效的对象。你有没有参考一个智能指针对象,它是在堆栈中声明的并且实际上不再存在?

相关问题