我正在使用Instrument(XCode工具)来获取程序的堆栈跟踪,并且得到以下结果:
在这张照片中,它显示了
的破坏 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 *buf
和size_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> >
的销毁尚未执行。
我现在更加困惑...