Я использую boost 1.55 (io_service doc). Мне нужно вызвать деструктор на моем io_service для его сброса после того, как на моем последовательном устройстве будет задействовано питание, чтобы получить новые данные. Проблема в том, что когда деструктор вызывается дважды (перепробовать соединение), я получаю ошибку сегментации.boost :: asio :: io_service проверить, если null
В заголовочном файле
boost::asio::io_service io_service_port_1;
В функции, которая закрывает соединение
io_service_port_1.stop();
io_service_port_1.reset();
io_service_port_1.~io_service(); // how to check for NULL?
// do I need to re-construct it?
Ниже не работает:
if (io_service_port_1)
if (io_service_port_1 == NULL)
Спасибо.
Вы не можете уничтожить объект дважды. Как только он уничтожен, он исчез. Поскольку вы явно вызываете деструктор, вы пытаетесь создать экземпляр нового экземпляра объекта? Почему вы все равно вызываете деструктор? –
@CaptainObvlious Я излагаю свою причину выше (циклическое питание устройства). Как создать экземпляр нового экземпляра 'io_service'? – xinthose
Выделите его в кучу и установите для него значение null в первый раз, когда вы его уничтожите? Или, возможно, используйте 'boost :: optional', если он предоставляет некоторый механизм для выполнения того, что вы хотите. – Arunmu