调用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某种地址?
答案 0 :(得分:-1)
segfault和明显垃圾usecount值表示您的智能指针对象不是有效对象。您是否有对在堆栈上声明的智能指针对象的引用,并且实际上不再存在?