[C con Clase] Redefinir un arreglo dinamico
Steven Davidson
srd4121 en njit.edu
Mie Mayo 27 18:56:44 CEST 2009
Hola Kalith,
Kalith wrote:
> pero osea no hay forma de hacerlo en el mismo arreglo sin necesidad de
> usar uno extra?
>
Sí existe una forma, pero tienes que usar las funciones estándares de
ANSI C. Te interesa la función 'realloc()'. Esta función te garantiza
que los elementos originales no serán borrados si aumentas el tamaño de
la memoria de tal bloque. Por ejemplo,
int *ptr = (int *) realloc( 0, n ); // igual que 'malloc()'
...
ptr = (int *) realloc( ptr, ++n );
...
free( ptr );
En C++, puedes intentar usar el operador 'new' con colocación. Por ejemplo,
int *ptr = new int[n];
...
ptr = new(ptr) int[++n];
...
delete[] ptr;
Debo decir que no lo he probado, pero teóricamente esto debería
funcionar. Si no estoy equivocado, creo que tienes que #incluir el
fichero <new>. Si funciona correctamente, tampoco puedo asegurar que la
información original permanezca.
Espero que esto te sirva.
Steven
Más información sobre la lista de distribución Cconclase