Ответы Mail.ru: C++. Проблема с деструктором.

Проблема в вашем коде заключается в неправильном чтении объекта Host из файла. Когда вы считываете объект типа Host из файла, вы пытаетесь скопировать бинарные данные из файла прямо в объект Host, что приводит к проблемам с нарушением структуры объекта и вызывает неопределенное поведение.

Вместо этого, для корректного чтения из файла вам нужно использовать методы чтения для каждого члена вашего класса Host. Вот как вы можете изменить вашу функцию test():

 void test() {  
    std::ifstream f("tvdata.bin", std::ios::binary); 
    if (!f.is_open()) { 
        std::cerr << "Failed to open file." << std::endl; 
        return; 
    } 
 
    worker_type wtype; 
    f.read(reinterpret_cast(&wtype), sizeof(wtype)); 
 
    if (wtype == host) { 
        Host h; 
        f.read(reinterpret_cast(&h), sizeof(wtype)); // Чтение worker_type 
        f.read(reinterpret_cast(&h), sizeof(Host)); // Чтение остальных данных 
        h.ShowInfo(); 
    } 
 
    f.close(); 
} 
 

Теперь мы сначала читаем worker_type, а затем, если тип равен host, читаем остальные данные Host из файла. Помните, что при сериализации и десериализации важно поддерживать правильный порядок чтения и записи данных.