关于websocketpp破坏的堆栈跟踪的困惑

时间:2018-10-17 13:27:43

标签: c++ c++11 boost instruments websocket++

我正在使用Instrument(XCode工具)来获取程序的堆栈跟踪,并且得到以下结果:

enter image description here

在这张照片中,它显示了

的破坏

std::__1::vector<websocketpp::transport::buffer, std::__1::allocator<websocketpp::transport::buffer> >::~vector()

称为

std::__1::vector<boost::asio::detail::timer_queue<boost::asio::detail::chrono_time_traits<std::__1::chrono::steady_clock, boost::asio::wait_traits<std::__1::chrono::steady_clock> > >::heap_entry, std::__1::allocator<boost::asio::detail::timer_queue<boost::asio::detail::chrono_time_traits<std::__1::chrono::steady_clock, boost::asio::wait_traits<std::__1::chrono::steady_clock> > >::heap_entry> >::~vector()

但是,当我深入研究websocketpp::transport::buffer的源代码时,它的唯一成员是char const *bufsize_t len,如下所示:

// defined in websocketpp/transport/base/connection.hpp

137 /// A simple utility buffer class
138 struct buffer {
139     buffer(char const * b, size_t l) : buf(b),len(l) {}
140
141     char const * buf;
142     size_t len;
143 }; 

那么,为什么破坏websocketpp::transport::buffer可能导致破坏vector<boost::asio::detail::timer_queue.... ::heap_entry> >

更新时间:2018-10-18

今天我用lldb调试程序,发现vector<boost::asio::detail::timer_queue.... ::heap_entry> >的销毁尚未执行。

我现在更加困惑...

0 个答案:

没有答案