int *ip = new int[10];
for (int i = 0; i<10; i++)
*(ip+i) = i;
myfun(ip); // assume that myfun takes an argument of
// type int* and returns no result
delete [] ip;
The above code is a small segment of a test function that I am trying to use to learn about the stack and the heap.
I am not fully sure what the correct sequence is.
This is what I have thus far:
- When the pointer ip is created it points to a new int array of size 10 created on the heap due to to the "new" declaration.
- 0-9 is added to the array from 0-9.
- The pointer is now passed through to myfun which means that myfun has a pointer that points to the same memory space on the heap.
- The
delete []ip;
removes the memory allocated on the heap to the ip pointer. The pointer that got passed through to myFun now points to nothing. - Once the function has finished the ip variable is deleted as it is only local to the function.
Would someone be able to clarify if I am correct or not and correct me where I went wrong? Also if I attempted to carry on using ip after that would it just point to nothing ?