2016-11-22 19 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值表明你的智能指針對象不是一個有效的對象。你有沒有參考一個智能指針對象,它是在堆棧中聲明的並且實際上不再存在?

相關問題