Путаница с трассировкой стека уничтожения websocketpp - PullRequest
0 голосов
/ 17 октября 2018

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

Я чувствую себя более растерянным ...

...