es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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;
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    En el fragmento de código proporcionado, se declara char *t pero no se inicializa. Para copiar la cadena a la que apunta char *s en char *t, primero es necesario asignar memoria a t. Se utiliza malloc(3) para asignar exactamente 3 bytes de memoria a t (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 puntero t 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 a t, asegurando que haya suficiente espacio para contener la cadena copiada. Es importante liberar esta memoria asignada dinámicamente utilizando free() cuando ya no se necesite, para evitar fugas de memoria.

Comments are closed.