In my code I have a vector that holds integers. Using the first loop I create 100 new integers and push them on the vector. The next loop then deletes all the dynamically allocated integers with the exception of the last, because the deletion of the last integer causes the error and returns 0xc0000005. Why does my program crash with the deletion of the last integer? 

```
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> list;

    cout << list.size() << endl;

    int i = 0;
    while(i!=100)
    {
        list.push_back(*(new int(12)));
        i++;
    }

    cout << list.size() << endl;

    i=0;
    while(i!=99)
    {
        delete &list.back();
        list.pop_back();
        i++;
    }
/*
    delete &list.back();

    list.pop_back();
*/
    cout << list.size() << endl;

    return 0;
}

```