С++ Почему вылетает ошибка после загрузки объекта из файла?

Прошу помощи у мастеров С++ Ситуация такая: Нужно сохранить объект в файл, и потом его успешно считать. С этим проблем не возникло, но всегда при работе деструктора вылетают ошибки... И ошибка только если в коде имеется загрузка из файла данных в класс. Почему так? Прошу показать возможные решения моего кода пж.

class Test
{
public: 
    
    class MC
    {
    public:
        MC() {}
        ~MC() {}

        string text{ "TEXT" };
        string text2{};
    };

    Test()
    {
        MC Class1;                      // Тестовый объект класса 1
        Class1.text2 = Class1.text;     // Выполняем действие внутри объекта, чтобы он отличался от стока
        Save(str, Class1);              // Сохраняем объект в файл

        MC Class2;                      // Тестовый объект класса 2
        Load(str, Class2);              // Считываем данные из файла и записываем их в объект2
        
    }
    ~Test() {}





    bool Save(string file, MC& obj) {

        ofstream(("" + file));                                // Очищаем файл по полученному адресу
        ofstream Out;                                         // Создаём объект для записи данных в файл
        Out.open(file, ofstream::app);                        // Открываем файл для записи
        if (!Out.is_open()) { Out.close(); return false; }    // Проверка на открытие файла
        else { Out.write((char*)&obj, sizeof(obj)); }         // Производим запись данных в файл
        Out.close();                                          // Закрываем файл после обработки
        return true;
    }
    bool Load(string file, MC& obj) {
        ifstream fin;                                         // Создаём объект Класса чтения из файла
        fin.open(file);                                       // Открываем файл для записи
        if (!fin.is_open()) { fin.close(); return false; }    // Проверка на открытие файла
        else { fin.read((char*)&obj, sizeof(obj)); }          // Производим считывание данных из файла
        fin.close();                                          // Закрываем файл после обработки
        return true;
    }

    string str{ "D:/General File/Test_Save3.txt" };
};

Ошибка возникает в зависимости от сложности структуры кода, но всегда при работе де-конструкторов. В данном варианте ошибка в файле xmemory - в методе: _Container_base12::_Orphan_all_unlocked_v3()

    void Start() {

        vector<int> str1{ 5, 15, 20 };
        vector<int> str2{};

        SavingLoadingData::SaveDataInFile("D:/General File/Test_Save2.txt", str1);
        SavingLoadingData::LoadDataFromFile("D:/General File/Test_Save2.txt", str2);


        cout << "str1 = " << str1[0] << endl
            << "str2 = " << str2[0] << endl;

    }


Аналогичная ситуация просто с векторами и string


Ответы (0 шт):