La copie d'Un Tableau Alloué Dynamiquement à l'Autre C++

Cela semble comme il devrait avoir une super solution facile, mais je ne peux pas le comprendre. Je suis tout simplement la création d'un redimensionnement de tableau et d'essayer de copier toutes les valeurs d'origine, et enfin la suppression de l'ancien tableau pour libérer de la mémoire.

void ResizeArray(int *orig, int size) {
    int *resized = new int[size * 2]; 
    for (int i = 0; i < size; i ++)
        resized[i] = orig[i];
    delete [] orig;
    orig = resized;
}

Ce qui semble être le cas ici, c'est que resized[i] = orig[i] est de copier les valeurs par référence plutôt que de la valeur, que l'impression orig après c'est redimensionnée retourne un tas de ferraille valeurs, à moins que j'en commentaire delete [] orig. Comment puis-je faire une copie de orig à redimensionnée, ou est-il un autre problème que je suis confronté? Je ne veux pas utiliser std::vector.

Notez qu'il n'y a pas une telle chose comme "copie des valeurs de référence". Soit vous êtes en train de créer une nouvelle référence pour les mêmes données ou de votre copie.
Même si vous ne souhaitez pas utiliser std::vector, vous permettrait de gagner beaucoup en les enveloppant de cette dans une classe afin que les clients peuvent passer autour d'un invariant de l'objet et ne pas avoir à gérer le fait que la mise en œuvre de pointeur est en train de changer avec tous les redimensionner. :-/

OriginalL'auteur Rahul Gupta-Iwasaki | 2011-11-08