Tengo dos cadenas, str1 y str2. Quiero la concatenación de ellos en un espacio en el montón. Me MALLOC espacio para ellos usando:¿Manera correcta de malloc espacio para una cadena y luego insertar caracteres en ese espacio?
char *concat = (char*) malloc(strlen(str1) + strlen(str2) + 1);
¿Puedo hacer:
strcat(concat, str1);
strcat(concat, str2);
Y concat me dará el lugar en el montón con las dos cadenas concatted? Lo estoy preguntando porque parece que strcat realmente agregaría str1 al final del espacio asignado usando malloc. ¿Es esto correcto? Entonces, str1 aparecería en la posición strlen (str1) + strlen (str2) + 1.
La razón por la que estoy preguntando es que estoy usando el método anterior, pero estoy obteniendo un error en valgrind: salto condicional o movimiento depende de valor sin inicializar (s)
+1 Definitivamente una muy buena manera de hacerlo. Probablemente usaría 'memmove()' en lugar de 'memcpy()' porque, aunque 'memcpy()' es seguro en esta situación, no siempre es seguro, pero 'memmove()' siempre es seguro. –
No use 'memmove' aquí; es confuso. Cualquier uso de 'memmove' debería servir para documentar que estás haciendo algo muy diferente e inusual. Si viera 'memmove' aquí me gustaría pasar uno o dos minutos tratando de descubrir por qué el # * $ @ alguien lo usó y si algo sospechoso estaba sucediendo ... –