Copiar una cadena a otra dirección sin utilizar malloc().
Estoy (obviamente) aprendiendo C
No entiendo por qué utilizaría malloc
para asignar memoria a una cadena recién copiada (lo hicieron en la conferencia de memoria de cs50)
#include <stdio.h>
#include <stdlib.h>
int main(){
char *s = "Hola";
char *t; // ¿Por qué la necesidad de char *t malloc(3) aquí??
strcpy(t,s);
printf("%s",t); // imprime "Hola"
return 0;
}
davy.ai
En el fragmento de código proporcionado, se declara
char *t
pero no se inicializa. Para copiar la cadena a la que apuntachar *s
enchar *t
, primero es necesario asignar memoria at
. Se utilizamalloc(3)
para asignar exactamente3
bytes de memoria at
(incluyendo el carácter de terminación de cadena\0
).Si intentamos copiar directamente la cadena sin asignar memoria a
t
, esto llevará a un comportamiento indefinido, ya que el punterot
no está apuntando a ninguna ubicación de memoria válida.Por lo tanto, se utiliza la función
malloc
para asignar dinámicamente memoria at
, asegurando que haya suficiente espacio para contener la cadena copiada. Es importante liberar esta memoria asignada dinámicamente utilizandofree()
cuando ya no se necesite, para evitar fugas de memoria.