Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/01/2006, 09:14
Avatar de txetxol
txetxol
 
Fecha de Ingreso: febrero-2002
Ubicación: Pamplona
Mensajes: 73
Antigüedad: 22 años, 3 meses
Puntos: 1
Problema con strcat y memoria dinámica

Hola,

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:
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;
}
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.
¿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