当智能指针显示负使用次数时,这意味着什么

时间:2016-11-22 02:06:59

标签: c++

调用p_o-> p_order _-> somefunc()时出现段错误。我查看了调试器,发现共享指针的计数器看起来很奇怪。它显示共享ptr的neg计数和弱ptr的大coutn(我从未使用过)

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

我是否误解了此处提供的信息,或者有什么奇怪的事情发生? 另外,我对调试器并不熟悉,但是缺少行的@address

p_order_    0x20000000009b6b7   Online::Order 

暗示指针p_order_(这是一个原始指针)无效/ null,..?或者是0x20000000009b6b7某种地址?

1 个答案:

答案 0 :(得分:-1)

segfault和明显垃圾usecount值表示您的智能指针对象不是有效对象。您是否有对在堆栈上声明的智能指针对象的引用,并且实际上不再存在?