Как говорили другие, просто не пишите new
и delete
, и вы знаете, что не испортили это сами.
В частности, ваш ошибочный
mysocket->close(ec);
выдает, потому что сокет изначально не открыт, поэтому вы никогда не достигли delete
.
Однако, mysocket
может быть автоматически уничтожен в конце области видимости: Весь код можно упростить до:
#include <boost/asio.hpp>
#include <iostream>
namespace ba = boost::asio;
using ba::ip::tcp;
int main() {
ba::io_context io_service;
try {
tcp::socket mysocket(io_service);
mysocket.connect({ba::ip::address::from_string("192.168.0.12"), 1});
std::cout << "Connected to " << mysocket.remote_endpoint() << "\n";
}
catch (boost::system::system_error const& se) {
std::cout << "System error: " << se.code().message() << "\n";
}
}