Ошибка при записи массива структур в бинарный файл C++

Необходимо записать массив структур в бинарный файл.

Структура:

struct Sportsman {
    string Name;
    string Sport;
    int Age;
};

Функция добавления массива в файл:

//Добавление элементов в файл
void FileAdd(vector<Sportsman>& A) {
    ofstream File("List.bin", ios::binary); //Открываем файл
    File.write((char*)&A, sizeof(A)); //Записываем массив в файл
    File.close(); //Закрываем файл 
}

Однако, при попытки получить значения из файла и вывести их - Microsoft Visual Studio выводит исключение в xmemory.

Само исключение:

Вызвано исключение по адресу 0x0086B7D2 в StructFile.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0xDDDDDDDD.

Код исключения:

// MEMBER FUNCTIONS FOR _Container_base12
inline void _Container_base12::_Orphan_all() noexcept {
#if _ITERATOR_DEBUG_LEVEL == 2
    if (_Myproxy) { // proxy allocated, drain it
        _Lockit _Lock(_LOCK_DEBUG);

        for (auto _Pnext = &_Myproxy->_Myfirstiter; *_Pnext; *_Pnext = (*_Pnext)->_Mynextiter) {
            (*_Pnext)->_Myproxy = nullptr;
        }

        _Myproxy->_Myfirstiter = nullptr;
    }
#endif // _ITERATOR_DEBUG_LEVEL == 2
}

Это случается при вызове функции вывода. Вот она:

//Вывод значений из файла
void FilePrint(int N) {
    vector<Sportsman> buffer(N);

    ifstream File("List.bin", ios::binary);
    File.read((char*)&buffer, sizeof(buffer)); //Считываем из файла данные в массив
    File.close();

    //Выводим массив с данными
    for (int i = 0; i < N; i++) {
        cout << buffer[i].Name << endl;
        cout << buffer[i].Age << endl;
        cout << buffer[i].Sport << endl << endl;
    }
}

Помогите разобраться в чём проблема. Весь код на Pastebin - https://pastebin.com/4Cxza7iX


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