// @topic T51002 Miscellaneous small samples developed in class
// @brief 10/02/2012 -- allocating/deallocating arrays, using a vector

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int* allocate_memory( int how_much ) {
    return ( new int[ how_much ] );
}

int main()
{
    cout << "how many ints do you want?";
    int array_size;
    cin >> array_size; // 4
    //int myarray[ 4 ]; myarray[ 0 ] = 123;
    //int* myarray = new int[ array_size ]; // addr -> int int int int

    // create an array of integers:
    int* myarray = allocate_memory( array_size );
    myarray[ 0 ] = 123;

    // deallocate memory
    if ( myarray != NULL ) {
        delete[] myarray;
        myarray = NULL;   // good practice:
        delete[] myarray; // it's safe to "delete" a NULL ptr
    }

    // create another array of integers:
    myarray = allocate_memory( 2 * array_size );

    // whenever possible, use STL containers to manage memory:
    vector< int > vect;
    vect.push_back( 1 );
    vect.push_back( 3 );
    vect.push_back( 2 );

    // make a copy -- it's that easy!
    vector< int > vect2 = vect;
    return 0;
}