Estoy haciendo una función en C++ para concatenar una cadena con otra con memoria dinámica, el problema es que me da error
Código:
Según he leido strcat hace una copia de la segunda cadena y la une a la primera. ¿o no es así? sino no daría error al liverra memoria.char* strcatnredim(char *a, char *b, int n) { char *paux=NULL, *ptmp=NULL; paux=new char[!n?strlen(b):n+1]; *paux='\x0'; // Reserva memoria la cadena a sustituir if(n) strncat(paux,b,n); else strcpy(paux,b); // Copia la cadena ptmp=new char[a?strlen(a):0+strlen(paux)+1]; *ptmp='\x0'; // Reserva memoria para la nueva cadena if(a) strcpy(ptmp,a); strcat(ptmp,paux); // Copia la cadena resultante if(a) delete [] a; delete [] paux; return ptmp; }
¿Como puedo solucionarlo?
¿Como podría guardar el resultado directamente en a? si hago a=ptmp no se guarda al salir de la función.
Muchas gracias