Usuario:Cstaff/Zona de pruebas

Esta es una zona de pruebas

Somos responsables de liberar cualquier espacio que reservemos dinámicamente una vez que dejemos de usarlo.

En C

En C esta operación se realiza utilizando las funciones de la librería <stdio.h> malloc, realloc y free.

Ejemplo:

#include <string.h>
#include <stdio.h>

//Clona una cadena de caracteres y retorna 
//un puntero a la nueva cadena.
char *strclone(char *src){
      char *mem_dinamica;                        //Puntero al espacio a reservar.
      size_t str_len;                            //Tamaño de la cadena que se quiere clonar.

      str_len = strlen(src);                     //Determinamos el tamaño de la cadena.
      mem_dinamica = (char*)malloc(str_len+1);   //Reservamos el espacio + caracter '\0'.
      if( mem_dinamica != NULL){                 //Comprobamos que se reservara el espacio.
         strcpy(mem_dinamica, src);              //Copiamos la cadena.
      }
      return mem_dinamica;                       //Retornamos el puntero a la nueva cadena.
}


int main(){
      char *str1 = NULL;
      char str2 = "Hola Mundo";
 
      str1 = strclone(str2);

      if(str1 != NULL){
            printf("La cadena clonada es: %s\n", str1);
      }else{
          printf("Error: No se pudo clonar la cadena\n");
      }

      free(str1);                                //Liberamos el espacio previamente reservado.
      return 0;
}

Note que podemos llamar a free incluso si el puntero es NULL.