I am trying to create a dynamic string array in c++. When trying to display the contents of my dynamic string array to the console I receive this error:
Exception thrown at 0x0FD670B6 (msvcp140d.dll) in Assignment4.exe: 0xC0000005: Access violation reading location 0xDDDDDDDD.
Here is my code:
DynamicStringArray.h
#pragma once
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
class DynamicStringArray
{
public:
    DynamicStringArray();
    DynamicStringArray(DynamicStringArray &array);
    ~DynamicStringArray();
    int getSize();
    void displayContents();
    void addEntry(const string &addElement);
    string getEntry(int index);
    int deleteEntry(const string &deleteElement);
private: 
    string *dynamicArray;
    int size;
};
DynamicStringArray.cpp
#include "stdafx.h"
#include "DynamicStringArray.h"
#include <string>
#include <iostream>
using namespace std;
DynamicStringArray::DynamicStringArray()
{
    dynamicArray = NULL;
    size = 0;
}
DynamicStringArray::DynamicStringArray(DynamicStringArray &array)
{
    if (dynamicArray != NULL)
    {
        size = 0;
        delete [] dynamicArray;
        dynamicArray = NULL;
    }
    size = array.getSize();
    dynamicArray = new string[size];
    for (int i = 0; i < size; i++)
        dynamicArray[i] = array.dynamicArray[i];
}
DynamicStringArray::~DynamicStringArray()
{
    cout << "In destructor." << endl;
    delete [] dynamicArray;
    dynamicArray = NULL;
}
int DynamicStringArray::getSize()
{
    return size;
}
void DynamicStringArray::displayContents()
{
    if (size != 0)
        for (int i = 0; i < size; i++)
            cout << "Item-" << i << ": " << dynamicArray[i] << endl;
    else
        cout << "Array is empty." << endl;
}
void DynamicStringArray::addEntry(const string &addElement)
{
    string *temp = new string[size + 1];
    for (int i = 0; i < size; i++)
            temp[i] = dynamicArray[i];
    temp[size] = addElement;
    size++;
    delete [] dynamicArray;
    dynamicArray = temp;
    delete[] temp;
}
string DynamicStringArray::getEntry(int index)
{
    if ((index >= 0) && (index < size))
    {
        return dynamicArray[index];
    }
    return NULL;
}
int DynamicStringArray::deleteEntry(const string &deleteElement)
{
    if(size == 0)
    {
        return false;
    }
    for (int i = 0; i < size; i++)
    {
        if (dynamicArray[i] == deleteElement)
        {
            string *temp = new string[size - 1];
            for (int x = 0; x < size - 1; ++x)
            {
                if (x < i)
                    temp[x] = dynamicArray[x];
                else
                    temp[x] = dynamicArray[x + 1];
            }
            delete[] dynamicArray;
            dynamicArray = temp;
            delete[] temp;
            --size;
            return true;
        }
    }
    return false;
}
main:
int main()
{
    DynamicStringArray dsArray1;
    cout << "dsArray1.displayContents():" << endl;
    dsArray1.displayContents();  // Should indicate array is empty
    cout << "Display dsArray1.getSize()= " << dsArray1.getSize() << endl;
    dsArray1.addEntry("Entry-A");
    dsArray1.displayContents();
    dsArray1.addEntry("Entry-B");
    dsArray1.displayContents();
    dsArray1.addEntry("Entry-C");
    dsArray1.displayContents();
    return 0;
}
Can anyone tell me what I am doing wrong. How can i fix this problem?
 
     
     
    