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