La Web del Programador: Comunidad de Programadores
 
    Pregunta:  61290 - COMO CAMBIAR EL TAMAÑO DE UN ARRAY O VECTOR EN TIEMPO DE EJE
Autor:  anbupa Net
Como puedo cambiar el tamaño de un vector o array en tiempo de ejecucion...

  Respuesta:  Francisco Rogles
En C puedes cambiar el tamaño de un array en tiempo de ejecución si ese array lo has generado con malloc o calloc. Por ejemplo:

int *iPtr; // Puntero a entero

iPtr = (int *)malloc(100); // Reservamos espacio para 25 enteros (100 bytes)

Ahora supongamos que necesitamos espacio para 50 enteros (200 bytes):

iPtr = (int *)realloc(iPtr, 200);

Supongamos que necesitamos espacioo para 10 enteros (40 bytes):

iPtr = (int *)realloc(iPtr, 40);

Si el nuevo espacio es mayor, se respeta el contenido anterior, pero el contenido del espacio extra queda indeterminado. Si el nuevo espacio es menor, se respetan los valores hasta el nuevo límite, y a partir de ahí se pierden.

Ojo, que esto solamente sirve cuando has hecho asignaciones dinámicas de memoria con malloc o calloc. No puedes utilizarlo cuando el array lo has dimensionado directamente en tiempo de compilación.

No sé como se hace en C++, hace poco que he empezado a tocarlo, pero creo que hay otros métodos. Podrías emplear el sistema que he indicado para C, siempre que no lo mezcles con new y delete (creo que no es conveniente hacerlo).

Espero te sirva de ayuda. Saludos,

PACO