I have some code that is producing unexpected results. Here is the code:
#include <iostream> using namespace std; int **nums; int size; void A(int** arr) { int **resize; resize = new int*[size*2]; for(int i = 0; i < size; i++) resize[i] = new int(*arr[i]); cout << endl; arr = resize; size *= 2; delete[] resize; } int main() { size = 10; nums = new int*[size]; for(int i = 0; i < size; i++) nums[i] = new int(i); for(int i = 0; i < size; i++) cout << *nums[i] << endl; A(nums); cout << endl; for(int i = (size / 2); i < size; i++) nums[i] = new int(i); for(int i = 0; i < size; i++) cout << *nums[i] << endl; } The function A(int** arr) works fine as far as I can tell and actually resizes the array. However, in the last for loop in main(), when the array is printing, the first two elements of the array are not 0 and 1 like it is supposed to be. Here is the result I am getting:
0 1 2 3 4 5 6 7 8 9 16331248 16331712 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Those first two ints after the space are different each time the program is executed. After some debugging I found out that the first two elements print correctly until the iterator i=13 in the second to last for loop in main(). Then the first two elements in the array take on some large numbers. I am not sure why this is happening and I have been working on this for a couple of hours now :( Any help is appreciated.