Я использую инструмент (инструмент 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> >
еще никогда не выполнялось.
Я чувствую себя более растерянным ...