Распределение памяти C++, new и delete + работа с файлами
Всем привет ! Возник вопрос, при работе с файлами. По заданию надо записать пользовательскую структуру в файл, потом вывести обратно. Собственно вопрос возникает при записи в файл,
void writeStructureToFile(const string& name, const string& profession, const int& age) {
ofstream fileout;
fileout.open(this->path, ofstream::app);
if (!fileout.is_open()) {
Provider::alertFileError();
}
person* _person = nullptr;
_person = new person{ name, profession, age };
fileout.write((char*)_person, sizeof(person));
fileout.close();
this->counter += 1;
delete _person;
_person = nullptr;
}
После выполнения функции, дальше при чтении в этой функции:
void readStructureFromFile() {
ifstream filein;
filein.open(this->path);
if (!filein.is_open()) {
Provider::alertFileError();
}
int temp = this->counter;
person _person;
while (temp != 0) {
filein.read((char*)&_person, sizeof(person));
cout << "Name: " << _person.name << ", Profession: " << _person.profession << ", Age: " << _person.age << endl;
temp--;
}
filein.close();
}
Собственно вопрос заключается в том, почему удаляя метод delete _person в функции записи в файл, программа отрабатывает корректно:
void writeStructureToFile(const string& name, const string& profession, const int& age) {
ofstream fileout;
fileout.open(this->path, ofstream::app);
if (!fileout.is_open()) {
Provider::alertFileError();
}
person* _person = nullptr;
_person = new person{ name, profession, age };
fileout.write((char*)_person, sizeof(person));
fileout.close();
this->counter += 1;
}
