Распределение памяти 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;
    }

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