1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

C++ allocating arrays dynamically.

  1. Oct 15, 2013 #1

    Student100

    User Avatar
    Education Advisor
    Gold Member

    1. The problem statement, all variables and given/known data

    The problem is to dynamically allocate (closer to relocating) a dynamic class array in C++ based on the number of user inputs. We can't use vectors, malloc, realloc, or any such functions beyond new or anything simple like asking the user for how many questions they want to input.



    2. Relevant equations
    None


    3. The attempt at a solution

    I've got it to where it will print out what I want to see, I'm not losing any information when I print out the array elements. My question is mostly to do with some confusion I have about what’s going on with the pointers during the relocating and repointing

    ...
    Code (Text):
        while (addQuestion == 1)
        {
            cout << "Please enter the question you would like to ask" << endl;
            cin >> userNewQuestion;
            cout << endl;
            cout << "please enter the anwser to the question you'd like to ask" << endl;
            cin >> userNewAnwser;
            cout << "Please enter the dollar amount you'd like the question to be worth" << endl;
            cin >> addDollarAmount;
            cout << "Enter another question? 1 for yes, 2 for no: ";
            cin >> addQuestion;
            cout << endl;

            Triva userNewTrivaQuestion(userNewQuestion, userNewAnwser, addDollarAmount);

            pntTriva myNewDynamicArray;
            myNewDynamicArray = new Triva[size+1];
            myNewDynamicArray[size] = userNewTrivaQuestion;
            copy(myDynamicTriva, myDynamicTriva+size, myNewDynamicArray);
            delete [] myDynamicTriva;
            size++;
            myDynamicTriva = myNewDynamicArray;

        }
    I think it's behaving and starting with the original array, copying it into the temp MyNewDynamicArray that stores the new class member into the extra element, deletes the original dynamic allocation and points the original to the temp. However, I'm confused if when it runs a second time and goes through all the motions again if I'm leaving some dynamically allocated memory floating around somewhere that I shouldn't be? Is this the case, or does the delete make sure to take care of each old dynamical array like I think it should?

    I'm using VS2010 ultimate, I'm not great with the debugger yet, the extent of my skill with it is to step through/in and add a watch. Beyond that I'm not exactly sure how to check dynamic allocations.
     
    Last edited: Oct 15, 2013
  2. jcsd
  3. Oct 15, 2013 #2

    UltrafastPED

    User Avatar
    Science Advisor
    Gold Member

    It looks OK ...the delete[] deallocates the old copy, while the new one is dynamically allocated/deallocated inside the loop.
     
  4. Oct 15, 2013 #3

    Student100

    User Avatar
    Education Advisor
    Gold Member

    Thanks I appreciate the response, that's what I had thought was happening, but I still felt unsure about it.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted