Le redimensionnement d'un tableau dynamique en c++

J'ai un code qui est en train de produire des résultats inattendus. Voici le 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;

}

La fonction A(int** arr) fonctionne très bien que ce que je peux en dire et en fait redimensionne le tableau. Cependant, dans la dernière boucle dans le main(), lorsque le tableau est en cours d'impression, les deux premiers éléments du tableau ne sont pas des 0 et des 1 comme il est censé être. Voici le résultat que j'obtiens:

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

De ces deux premières ints après l'espace sont différentes à chaque fois que le programme est exécuté. Après un peu de débogage, j'ai trouvé que les deux premiers éléments d'impression correctement jusqu'à ce que l'itérateur i=13 dans la seconde à la dernière boucle dans le main(). Ensuite, les deux premiers éléments de la matrice de prendre sur certains des grands nombres. Je ne suis pas sûr de savoir pourquoi cela se passe et j'ai travaillé sur cette question depuis quelques heures maintenant 🙁 Toute aide est appréciée.

InformationsquelleAutor homegrown | 2014-07-13