Usuario:Cstaff/Zona de pruebas
< Usuario:Cstaff
Revisión del 11:55 17 dic 2013 de Cstaff (discusión | contribuciones)
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.