[C con Clase] Redefinir un arreglo dinamico

Jose Cabrera josmaca en gmail.com
Mie Mayo 27 08:00:14 CEST 2009


Cuando lo creas tiene lo que podriamos llamar basura, datos que ya
estuviesen alli antes, puesto que cuando haces el new char[3] el sistema
reserva sitio para tres char pero no borra nada, si quieres ampliarlo a 4
tienes que hacer lo siguiente, por ejemplo con una funcion amplia.

amplia( char* pVector){
  char* aux;
  int tam = strlen(pVector); //Vemos el tamaño de pVector
  aux = new char[tam*2]; // Se suele ampliar al doble
  char caracter = 'a'; //inicializamos a algun valor diferente a \0
  int i = 0; //contador
  while( caracter != '\0' && i<tam){
    caracter = pVector[i];
    aux[i] = caracter;
    i++;
  }
  delete [] pVector;
  pVector = aux;
}


El 27 de mayo de 2009 2:24, Kalith <kalith en kernelerror.net> escribió:

> Buenas..
> Sigo con el tema de la memoria dinámica, veamos, supongo que defino un
> arreglo de tamaño n
>
> char *pVector;
>
> pVector = new char[n];
>
> suponiendo que n sea 3
>
> y ya estan ocupadas las n posiciones del mismo
>
> "zzz"
>
> si quisiera agregar mas elementos pero conservando los anteriores osea
> imaginemos que quiera agregar un n+1 elemento y que mi vector quede "zzzz"
> como lo haria¿?
>
> gracias
>
> --
> Seamos realistas y hagamos lo imposible
> Linux Counter User #487374
>
> ---
> Nosotros los complacientes, guiados por lo desconocido, estamos haciendo lo
> imposible para los ingratos, y hemos estado haciendo tanto por tanto tiempo
> con tan poco, que ahora estamos capacitados a hacer cualquier cosa con nada
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090527/fd3dceaa/attachment.html>


Más información sobre la lista de distribución Cconclase