Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/09/2014, 14:17
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Copiar un vector de punteros a otro y lugo borrarlo

Puedes determinar el tamaño de c1 y reservar un bloque de ese tamaño, luego copias directamente c1 a ese bloque y ya lo tienes, algo asi:

Código C++:
Ver original
  1. int sz = 0, sx = 0;
  2. for(int m = 0; m < n; m++) {
  3.     //sz += (strlen(c1[m]));
  4.     sz += (strlen(c1[m]) + 1);//*nota*
  5. }
  6. sx = (sizeof(char *));
  7.  
  8. carpetas1 = new char* [sz + sx];
  9. memcpy(carpetas1, c1, sz);
  10.  
  11. delete [] c1;
  12. c1 = 0;
  13.  
  14. //ok ya tienes una copia de c1 mas un espacio libre en carpetas1[n]

*nota* En esta linea puedes preservar el \0 del final de char* en caso de que exista, si en c1 no hay \0 final no debes preservarlo, esto depende de como lo implementes.

Recuerda que para cada new necesitas un delete.

Si estas intentado ampliar la memoria y vas a trabajar con char* tal vez te resulte mas util usar malloc y realloc sobre un unico vector. Desconozco si en c++ hay un equivalente a realloc, seria question de echarle un vistazo.

Saludos
vosk