I've been beating my head against this one for awhile. In the deconstructor of my class, I have a for loop that is supposed to iterate through an array of objects and delete them. When I try though, I get a read access violation. The attached code is supposed to read info from two documents and use that to create Country objects.
#include "pch.h"
#include "CountryCatalogue.h"
#include "Country.h"
#include <iterator>
#include <map>
//imports for reading the files
#include <iostream>
#include <fstream>
CountryCatalogue::CountryCatalogue()
{
    _maxSize = 10;
    _curSize = 0;
    _catalogue = new Country*[_maxSize];
}
CountryCatalogue::CountryCatalogue(std::string continentFileName, std::string countryFileName)
{
//block that opens the files and checks to make sure they can be read
//open up the files
std::ifstream inFile1;
std::ifstream inFile2;
//opening both text files and ensuring that the file is readable to the program
inFile1.open(continentFileName);
if (!inFile1) {
    std::cout << "Unable to open file";
    exit(1); // terminate with error
}
inFile2.open(countryFileName);
if (!inFile2) {
    std::cout << "Unable to open file";
    exit(1); // terminate with error
}
// read the continet file
// while there is still stuff to read in the file
std::string str;
while (!inFile1.eof())
{
    std::string Country, Cont;
    //reading lines from file and assigning to variables
    std::getline(inFile1, Country);
    std::getline(inFile1, Cont);
    //mapping to variables read from file
    _countryContinent.insert(std::pair<std::string, std::string>(Country, Cont));
    _curSize++;
}
//closing file after use
inFile1.close();
//creating array
_catalogue = new Country*[_curSize+2];
//resetting size to zero for later itteration
_curSize = 0;
// read the country file
// while there is still stuff to read in the file
while (!inFile2.eof())
{
    std::string name, POP, AREA;
    int pop;
    double area = 0.0;
    std::getline(inFile2, name);
    std::getline(inFile2, POP);
    std::getline(inFile2, AREA);
    if (!POP.empty() && POP[POP.length() - 1] == '\n') {
        POP.erase(POP.length() - 1);
    }
    if (!AREA.empty() && AREA[AREA.length() - 1] == '\n') {
        AREA.erase(AREA.length() - 1);
    }
    pop = std::stoi(POP);
    area = std::stod(AREA);
    //creating iterator to search through mapped values
    std::map<std::string, std::string>::iterator it;
    it = _countryContinent.find(name);
    //creating empty string variable to store continent
    std::string cont;
    //using value found by iterator to make continent string
    //ensuring value isn't the end valueof the map
    if (it != _countryContinent.end()){
        cont = it->second;
    }
    //std::cout << name << pop << area << cont << std::endl;
    // add the country to the catalogue
    addCountry(name, pop, area, cont);
    }
}
CountryCatalogue::~CountryCatalogue() {
    /*for (int i = 0; i < _curSize; i++){
        delete _catalogue[i];
        std::cout << "deleted" << i << std::endl;
    }*/
    delete[] _catalogue;
}
void CountryCatalogue::addCountry(std::string name, int pop, double area,     std::string cont) {
    //std::cout << name << pop << area << cont << std::endl;
    //std::cout << _curSize << std::endl;
    Country* toAdd = new Country(name, pop, area, cont);
    if (_curSize == _maxSize) {
        expandCapacity();
    }
    //adding country object to array
    _catalogue[_curSize] = toAdd;
    //adding to _curSize for next iteration
    _curSize++;
}
void CountryCatalogue::printCountryCatalogue() {
    std::string s;
    /*for (int i = 0; i < _curSize; i++) {
        s += _catalogue[i]->to_string() + "\n";
    }*/ 
    std::cout << _curSize << std::endl;
}
void CountryCatalogue::expandCapacity() {
    //doubling array size
    _maxSize = _maxSize * 2;
    //creating pointer to new array of new size
    Country** newCatalogue = new Country*[_maxSize];
    //copying old array into new
    for (int i = 0; i < _curSize; i++) {
        newCatalogue[i] = _catalogue[i];
    }
    //deleting old array
    delete[] _catalogue;
    //making _catalogue point to newCatalogue
    _catalogue = newCatalogue;
}
UPDATE: What my code is supposed to do is get information from text files and create objects using that data. I am required to use an array instead of a vector. The code runs fine and I can create the country object. The issue is that I cannot add the created object to the _catalogue array, as I cannot delete it afterwards. When I attempt to iterate through the array, I receive a message saying Heap Corruption was detected.
 
     
     
    