C++ 来自boost::asio的Valgrind错误

C++ 来自boost::asio的Valgrind错误,c++,boost-asio,valgrind,C++,Boost Asio,Valgrind,在分析我的程序时,我遇到了valgrind报告的奇怪错误。你能帮我找到他们的来源吗 最小示例 main.cpp: #define BOOST_ASIO_ENABLE_HANDLER_TRACKING #include "foo.h" #include <iostream> int main() { boost::asio::io_service ioService; Foo foo(ioService); ioService.run(); retu

在分析我的程序时,我遇到了valgrind报告的奇怪错误。你能帮我找到他们的来源吗

最小示例

main.cpp:

#define BOOST_ASIO_ENABLE_HANDLER_TRACKING

#include "foo.h"
#include <iostream>

int main()
{
    boost::asio::io_service ioService;
    Foo foo(ioService);
    ioService.run();
    return EXIT_SUCCESS;
}
当使用
g++-g3-O0-lboost\u系统-lpthread-o main./main.cpp./foo.cpp编译并使用类型为无效写入的
valgrind./main
valgrind报告执行时

==14905== Memcheck, a memory error detector
==14905== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==14905== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==14905== Command: ./main
==14905== 
==14905== Invalid write of size 1
==14905==    at 0x406724: boost::asio::detail::scheduler::scheduler(boost::asio::execution_context&, int) (scheduler.ipp:103)
==14905==    by 0x40CBF6: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905==  Address 0x5f06110 is 0 bytes after a block of size 240 alloc'd
==14905==    at 0x4C2E94F: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14905==    by 0x40CBE1: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905== 
==14905== Invalid write of size 1
==14905==    at 0x40672F: boost::asio::detail::scheduler::scheduler(boost::asio::execution_context&, int) (scheduler.ipp:103)
==14905==    by 0x40CBF6: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905==  Address 0x5f06111 is 1 bytes after a block of size 240 alloc'd
==14905==    at 0x4C2E94F: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14905==    by 0x40CBE1: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905== 
==14905== Invalid write of size 4
==14905==    at 0x40673D: boost::asio::detail::scheduler::scheduler(boost::asio::execution_context&, int) (scheduler.ipp:103)
==14905==    by 0x40CBF6: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905==  Address 0x5f06114 is 4 bytes after a block of size 240 alloc'd
==14905==    at 0x4C2E94F: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14905==    by 0x40CBE1: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905== 
@asio|1589278153.511608|0|resolver@0x1ffefff910.cancel
==14905== Invalid write of size 1
==14905==    at 0x406D20: boost::asio::detail::scheduler::stop_all_threads(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&) (scheduler.ipp:543)
==14905==    by 0x406A9E: boost::asio::detail::scheduler::stop() (scheduler.ipp:257)
==14905==    by 0x40CC67: boost::asio::io_context::stop() (io_context.ipp:121)
==14905==    by 0x40CF79: boost::asio::detail::resolver_service_base::base_shutdown() (resolver_service_base.ipp:58)
==14905==    by 0x40DFD9: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::shutdown() (resolver_service.hpp:65)
==14905==    by 0x405335: boost::asio::detail::service_registry::shutdown_services() (service_registry.ipp:44)
==14905==    by 0x40568C: boost::asio::execution_context::shutdown() (execution_context.ipp:41)
==14905==    by 0x405630: boost::asio::execution_context::~execution_context() (execution_context.ipp:34)
==14905==    by 0x4070A1: boost::asio::io_context::~io_context() (io_context.ipp:55)
==14905==    by 0x402DA2: main (main.cpp:9)
==14905==  Address 0x5f06110 is 0 bytes after a block of size 240 alloc'd
==14905==    at 0x4C2E94F: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14905==    by 0x40CBE1: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905== 
==14905== Invalid write of size 1
==14905==    at 0x4067E2: boost::asio::detail::scheduler::shutdown() (scheduler.ipp:111)
==14905==    by 0x405335: boost::asio::detail::service_registry::shutdown_services() (service_registry.ipp:44)
==14905==    by 0x40568C: boost::asio::execution_context::shutdown() (execution_context.ipp:41)
==14905==    by 0x405630: boost::asio::execution_context::~execution_context() (execution_context.ipp:34)
==14905==    by 0x4070A1: boost::asio::io_context::~io_context() (io_context.ipp:55)
==14905==    by 0x40D37A: boost::asio::detail::scoped_ptr<boost::asio::io_context>::reset(boost::asio::io_context*) (scoped_ptr.hpp:63)
==14905==    by 0x40CFD5: boost::asio::detail::resolver_service_base::base_shutdown() (resolver_service_base.ipp:64)
==14905==    by 0x40DFD9: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::shutdown() (resolver_service.hpp:65)
==14905==    by 0x405335: boost::asio::detail::service_registry::shutdown_services() (service_registry.ipp:44)
==14905==    by 0x40568C: boost::asio::execution_context::shutdown() (execution_context.ipp:41)
==14905==    by 0x405630: boost::asio::execution_context::~execution_context() (execution_context.ipp:34)
==14905==    by 0x4070A1: boost::asio::io_context::~io_context() (io_context.ipp:55)
==14905==  Address 0x5f06111 is 1 bytes after a block of size 240 alloc'd
==14905==    at 0x4C2E94F: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14905==    by 0x40CBE1: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905== 
==14905== 
==14905== HEAP SUMMARY:
==14905==     in use at exit: 1 bytes in 1 blocks
==14905==   total heap usage: 18 allocs, 17 frees, 79,744 bytes allocated
==14905== 
==14905== LEAK SUMMARY:
==14905==    definitely lost: 0 bytes in 0 blocks
==14905==    indirectly lost: 0 bytes in 0 blocks
==14905==      possibly lost: 0 bytes in 0 blocks
==14905==    still reachable: 1 bytes in 1 blocks
==14905==         suppressed: 0 bytes in 0 blocks
==14905== Rerun with --leak-check=full to see details of leaked memory
==14905== 
==14905== For lists of detected and suppressed errors, rerun with: -s
==14905== ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0)
==14905==Memcheck,内存错误检测器
==14905==2002-2017年版权(C)和GNU GPL'd,朱利安·苏厄德等人。
==14905==使用Valgrind-3.15.0和LibVEX;使用-h重新运行以获取版权信息
==14905==命令:./main
==14905== 
==14905==大小为1的写入无效
==14905==at 0x406724:boost::asio::detail::scheduler::scheduler(boost::asio::execution\u context&,int)(scheduler.ipp:103)
==14905==by 0x40CBF6:boost::asio::io_context::io_context(int)(io_context.ipp:44)
==14905==by 0x40CE22:boost::asio::detail::resolver\u service\u base::resolver\u service\u base(boost::asio::io\u context&)(resolver\u service\u base.ipp:40)
==14905==by 0x40DC6A:boost::asio::detail::resolver\u service::resolver\u service(boost::asio::io\u context&)(resolver\u service.hpp:58)
==14905==by 0x40DA56:boost::asio::execution\u context::service*boost::asio::detail::service\u registry::create(void*)(service\u registry.hpp:87)
==14905==by 0x40C88F:boost::asio::detail::service\u registry::do\u use\u service(boost::asio::execution\u context::service::key const&,boost::asio::execution\u context::service*(*)(void*),void*)(service\u registry.ipp:132)
==14905==by 0x40D86D:boost::asio::detail::resolver\u service&boost::asio::detail::service\u registry::use\u service(boost::asio::io\u context&)(service\u registry.hpp:39)
==14905==by 0x40D6A0:boost::asio::detail::resolver\u service&boost::asio::use\u service(boost::asio::io\u context&)(io\u context.hpp:39)
==14905==by 0x40D596:boost::asio::basic\u io\u object::basic\u io\u object(boost::asio::io\u context&)(basic\u io\u object.hpp:224)
==14905==by 0x40D498:boost::asio::ip::basic\u解析器::basic\u解析器(boost::asio::io\u上下文&)(basic\u解析器.hpp:101)
==14905==by 0x40C544:Foo::Foo(boost::asio::io_上下文&)(Foo.cpp:3)
==14905==0x402D79:main(main.cpp:10)
==14905==地址0x5f06110是分配大小为240的块后的0字节
==14905==at 0x4C2E94F:运算符新(无符号长)(在/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so中)
==14905==by 0x40CBE1:boost::asio::io_context::io_context(int)(io_context.ipp:44)
==14905==by 0x40CE22:boost::asio::detail::resolver\u service\u base::resolver\u service\u base(boost::asio::io\u context&)(resolver\u service\u base.ipp:40)
==14905==by 0x40DC6A:boost::asio::detail::resolver\u service::resolver\u service(boost::asio::io\u context&)(resolver\u service.hpp:58)
==14905==by 0x40DA56:boost::asio::execution\u context::service*boost::asio::detail::service\u registry::create(void*)(service\u registry.hpp:87)
==14905==by 0x40C88F:boost::asio::detail::service\u registry::do\u use\u service(boost::asio::execution\u context::service::key const&,boost::asio::execution\u context::service*(*)(void*),void*)(service\u registry.ipp:132)
==14905==by 0x40D86D:boost::asio::detail::resolver\u service&boost::asio::detail::service\u registry::use\u service(boost::asio::io\u context&)(service\u registry.hpp:39)
==14905==by 0x40D6A0:boost::asio::detail::resolver\u service&boost::asio::use\u service(boost::asio::io\u context&)(io\u context.hpp:39)
==14905==by 0x40D596:boost::asio::basic\u io\u object::basic\u io\u object(boost::asio::io\u context&)(basic\u io\u object.hpp:224)
==14905==by 0x40D498:boost::asio::ip::basic\u解析器::basic\u解析器(boost::asio::io\u上下文&)(basic\u解析器.hpp:101)
==14905==by 0x40C544:Foo::Foo(boost::asio::io_上下文&)(Foo.cpp:3)
==14905==0x402D79:main(main.cpp:10)
==14905== 
==14905==大小为1的写入无效
==14905==at 0x40672F:boost::asio::detail::scheduler::scheduler(boost::asio::execution\u context&,int)(scheduler.ipp:103)
==14905==by 0x40CBF6:boost::asio::io_context::io_context(int)(io_context.ipp:44)
==14905==by 0x40CE22:boost::asio::detail::resolver\u service\u base::resolver\u service\u base(boost::asio::io\u context&)(resolver\u service\u base.ipp:40)
==14905==by 0x40DC6A:boost::asio::detail::resolver\u service::resolver\u service(boost::asio::io\u context&)(resolver\u service.hpp:58)
==14905==by 0x40DA56:boost::asio::execution\u context::service*boost::asio::detail::service\u registry::create(void*)(service\u registry.hpp:87)
==14905==by 0x40C88F:boost::asio::detail::service\u registry::do\u use\u service(boost::asio::execution\u context::service::key const&,boost::asio::execution\u context::service*(*)(void*),void*)(service\u registry.ipp:132)
==14905==by 0x40D86D:boost::asio::detail::resolver\u service&boost::asio::detail::service\u registry::use\u service(boost::asio::io\u context&)(service\u registry.hpp:39)
==14905==by 0x40D6A0:boost::asio::detail::resolver\u service&boost::asio::use\u service(boost::asio::io\u context&)(io\u context.hpp:39)
==14905==by 0x40D596:boost::asio::basic\u io\u object::basic\u io\u object(boost::asio::io\u context&)(basic\u io\u object.hpp:224)
==14905==by 0x40D498:boost::asio::ip::basic\u解析器::basic\u解析器(boost::asio::io\u上下文&)(basic\u解析器.hpp:101)
==14905==by 0x40C544:Foo::Foo(boost::asio::io_上下文&)(Foo.cpp:3)
==14905==0x402D79:main(main.cpp:10)
==14905==地址0x5f06111是分配大小为240的块后的1个字节
==14905==at 0x4C2E94F:运算符新(无符号长)(在/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so中)
==14905==by 0x40CBE1:boost::asio::io_context::io_context(int)(io_context.ipp:44)
==14905==by 0x40CE22:boost::asio::detail::resolver\u service\u base::resolver\u service\u base(boost::asio::io\u context&)(resolver\u service\u base.ipp:40)
==14905==by 0x40DC6A:boost::asio::detail::resolver\u service::resolver\u service(boost::asio::io\u context&)(resolver\u service.hpp:58)
==14905==0x40DA56:boost::asio::execution\u cont
#include "foo.h"

Foo::Foo(boost::asio::io_service & ioService) : resolver_(ioService)
{
}
==14905== Memcheck, a memory error detector
==14905== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==14905== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==14905== Command: ./main
==14905== 
==14905== Invalid write of size 1
==14905==    at 0x406724: boost::asio::detail::scheduler::scheduler(boost::asio::execution_context&, int) (scheduler.ipp:103)
==14905==    by 0x40CBF6: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905==  Address 0x5f06110 is 0 bytes after a block of size 240 alloc'd
==14905==    at 0x4C2E94F: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14905==    by 0x40CBE1: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905== 
==14905== Invalid write of size 1
==14905==    at 0x40672F: boost::asio::detail::scheduler::scheduler(boost::asio::execution_context&, int) (scheduler.ipp:103)
==14905==    by 0x40CBF6: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905==  Address 0x5f06111 is 1 bytes after a block of size 240 alloc'd
==14905==    at 0x4C2E94F: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14905==    by 0x40CBE1: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905== 
==14905== Invalid write of size 4
==14905==    at 0x40673D: boost::asio::detail::scheduler::scheduler(boost::asio::execution_context&, int) (scheduler.ipp:103)
==14905==    by 0x40CBF6: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905==  Address 0x5f06114 is 4 bytes after a block of size 240 alloc'd
==14905==    at 0x4C2E94F: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14905==    by 0x40CBE1: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905== 
@asio|1589278153.511608|0|resolver@0x1ffefff910.cancel
==14905== Invalid write of size 1
==14905==    at 0x406D20: boost::asio::detail::scheduler::stop_all_threads(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&) (scheduler.ipp:543)
==14905==    by 0x406A9E: boost::asio::detail::scheduler::stop() (scheduler.ipp:257)
==14905==    by 0x40CC67: boost::asio::io_context::stop() (io_context.ipp:121)
==14905==    by 0x40CF79: boost::asio::detail::resolver_service_base::base_shutdown() (resolver_service_base.ipp:58)
==14905==    by 0x40DFD9: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::shutdown() (resolver_service.hpp:65)
==14905==    by 0x405335: boost::asio::detail::service_registry::shutdown_services() (service_registry.ipp:44)
==14905==    by 0x40568C: boost::asio::execution_context::shutdown() (execution_context.ipp:41)
==14905==    by 0x405630: boost::asio::execution_context::~execution_context() (execution_context.ipp:34)
==14905==    by 0x4070A1: boost::asio::io_context::~io_context() (io_context.ipp:55)
==14905==    by 0x402DA2: main (main.cpp:9)
==14905==  Address 0x5f06110 is 0 bytes after a block of size 240 alloc'd
==14905==    at 0x4C2E94F: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14905==    by 0x40CBE1: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905== 
==14905== Invalid write of size 1
==14905==    at 0x4067E2: boost::asio::detail::scheduler::shutdown() (scheduler.ipp:111)
==14905==    by 0x405335: boost::asio::detail::service_registry::shutdown_services() (service_registry.ipp:44)
==14905==    by 0x40568C: boost::asio::execution_context::shutdown() (execution_context.ipp:41)
==14905==    by 0x405630: boost::asio::execution_context::~execution_context() (execution_context.ipp:34)
==14905==    by 0x4070A1: boost::asio::io_context::~io_context() (io_context.ipp:55)
==14905==    by 0x40D37A: boost::asio::detail::scoped_ptr<boost::asio::io_context>::reset(boost::asio::io_context*) (scoped_ptr.hpp:63)
==14905==    by 0x40CFD5: boost::asio::detail::resolver_service_base::base_shutdown() (resolver_service_base.ipp:64)
==14905==    by 0x40DFD9: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::shutdown() (resolver_service.hpp:65)
==14905==    by 0x405335: boost::asio::detail::service_registry::shutdown_services() (service_registry.ipp:44)
==14905==    by 0x40568C: boost::asio::execution_context::shutdown() (execution_context.ipp:41)
==14905==    by 0x405630: boost::asio::execution_context::~execution_context() (execution_context.ipp:34)
==14905==    by 0x4070A1: boost::asio::io_context::~io_context() (io_context.ipp:55)
==14905==  Address 0x5f06111 is 1 bytes after a block of size 240 alloc'd
==14905==    at 0x4C2E94F: operator new(unsigned long) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14905==    by 0x40CBE1: boost::asio::io_context::io_context(int) (io_context.ipp:44)
==14905==    by 0x40CE22: boost::asio::detail::resolver_service_base::resolver_service_base(boost::asio::io_context&) (resolver_service_base.ipp:40)
==14905==    by 0x40DC6A: boost::asio::detail::resolver_service<boost::asio::ip::tcp>::resolver_service(boost::asio::io_context&) (resolver_service.hpp:58)
==14905==    by 0x40DA56: boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, boost::asio::io_context>(void*) (service_registry.hpp:87)
==14905==    by 0x40C88F: boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) (service_registry.ipp:132)
==14905==    by 0x40D86D: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::detail::service_registry::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (service_registry.hpp:39)
==14905==    by 0x40D6A0: boost::asio::detail::resolver_service<boost::asio::ip::tcp>& boost::asio::use_service<boost::asio::detail::resolver_service<boost::asio::ip::tcp> >(boost::asio::io_context&) (io_context.hpp:39)
==14905==    by 0x40D596: boost::asio::basic_io_object<boost::asio::detail::resolver_service<boost::asio::ip::tcp>, true>::basic_io_object(boost::asio::io_context&) (basic_io_object.hpp:224)
==14905==    by 0x40D498: boost::asio::ip::basic_resolver<boost::asio::ip::tcp>::basic_resolver(boost::asio::io_context&) (basic_resolver.hpp:101)
==14905==    by 0x40C544: Foo::Foo(boost::asio::io_context&) (foo.cpp:3)
==14905==    by 0x402D79: main (main.cpp:10)
==14905== 
==14905== 
==14905== HEAP SUMMARY:
==14905==     in use at exit: 1 bytes in 1 blocks
==14905==   total heap usage: 18 allocs, 17 frees, 79,744 bytes allocated
==14905== 
==14905== LEAK SUMMARY:
==14905==    definitely lost: 0 bytes in 0 blocks
==14905==    indirectly lost: 0 bytes in 0 blocks
==14905==      possibly lost: 0 bytes in 0 blocks
==14905==    still reachable: 1 bytes in 1 blocks
==14905==         suppressed: 0 bytes in 0 blocks
==14905== Rerun with --leak-check=full to see details of leaked memory
==14905== 
==14905== For lists of detected and suppressed errors, rerun with: -s
==14905== ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 0 from 0)