elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Liberar memoria asignada con malloc, después de salir de la función [C].
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Liberar memoria asignada con malloc, después de salir de la función [C].  (Leído 3,094 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Liberar memoria asignada con malloc, después de salir de la función [C].
« en: 27 Abril 2016, 21:23 pm »

Hola, gente.
Nuevamente con cositas que no puedo resolver consultando al amigo Google, de la manera como está planteado el programa ¿es imposible liberar la memoria asignada al puntero arr?, el manual aconseja que nunca se reserve memoria de esta manera, pero aunque sea para tener un conocimiento más, es realmente cierta mi pregunta. -

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int *asignar_Array(int size, int valor);
  5.  
  6. int main( void ){
  7. size_t i;
  8. int *vector = asignar_Array(5,45);
  9.  
  10. for( i=0; i<5; i++ ){
  11. printf("\n %d", vector[i]);
  12. }
  13.  
  14. free(vector);
  15.  
  16. return (EXIT_SUCCESS);
  17. }
  18.  
  19. int *asignar_Array(int size, int valor) {
  20. size_t i;
  21. int *arr = (int*)malloc( size * sizeof(int ));
  22.  
  23. for( i=0; i<size; i++ ) {
  24. arr[i] = valor;
  25. }
  26.  
  27. return arr;
  28. }


Saludos.


En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Liberar memoria asignada con malloc, después de salir de la función [C].
« Respuesta #1 en: 27 Abril 2016, 21:32 pm »

En verdad no sé que manual estás siguiendo pero tíralo.
El programa está bien y, por ejemplo, así funciona la función de libreria fopen.

Código
  1. FILE *f = fopen(ruta, modo);

Date cuenta que tu función retorna la dirección de inicio del bloque que has adquirido de memoria. Lo único que tienes que hacer es no perderlo en ningún momento para pasárselo a free.


« Última modificación: 27 Abril 2016, 21:41 pm por MAFUS » En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Liberar memoria asignada con malloc, después de salir de la función [C].
« Respuesta #2 en: 27 Abril 2016, 22:08 pm »

Hola, MAFUS. -
Por favor y antes de que tenga que hacer meditación para tranquilizarme, ¿que tiene que ver mi programas con los archivos?

Código
  1. FILE *f = fopen(ruta, modo);

Citar
En verdad no sé que manual estás siguiendo pero tíralo.
jajajajajajajajaja.....

No obstante, ya descubrí por donde viene la mano:

En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Liberar memoria asignada con malloc, después de salir de la función [C].
« Respuesta #3 en: 27 Abril 2016, 22:18 pm »

Es un ejemplo para que veas que hasta en la librería estándar usan el mismo código que tu, y que tanto odia tu manual. En serio, tíralo.
En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Liberar memoria asignada con malloc, después de salir de la función [C].
« Respuesta #4 en: 27 Abril 2016, 22:31 pm »

Es un ejemplo para que veas que hasta en la librería estándar usan el mismo código que tu, y que tanto odia tu manual. En serio, tíralo.

 ;-)
En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Liberar memoria asignada con malloc, después de salir de la función [C].
« Respuesta #5 en: 27 Abril 2016, 22:46 pm »

MAFUS, no seas tan duro con mi manual, es interesantisimo.-



Saludos.
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Liberar memoria asignada con malloc, después de salir de la función [C].
« Respuesta #6 en: 28 Abril 2016, 03:12 am »

Es un excelente libro el que estas leyendo; pero hubo un malentendido de tu parte; en el libro no lo recomiendan por podría conducir a una fuga de memoria, en el caso de que la memoria asignada no se haya liberado como claramente se menciona en la ultima parte es nuestra responsabilidad liberarla

Código
  1. int* vector = allocateArray(5,45);
  2. free(vector);

Te invito a que vuelvas a leer mas detenidamente esta parte
En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Liberar memoria asignada con malloc, después de salir de la función [C].
« Respuesta #7 en: 28 Abril 2016, 04:03 am »

Hola, Geeke.
Muchas gracias por el aporte, te voy a hacer una confesión, no tengo la más pálida idea del inglés y lo estoy traduciendo utilizando 4 traductores en línea (la tradución que me parece más acertada la paso a un borrador para estudiarlo luego) y como te imaginaras por momento entre la traducción que no es exacta y las ganas de disipar mis dudas ocurren estas cosas. -
Lo de no saber nada del idioma es por mis 64 años, en mis tiempos de estudio casi no se le daba importancia al inglés, pero como todos en los foros (cuando se da la oportunidad) me dicen que los mejores contenidos están en ese idioma, bueno estoy asiendo el esfuerzo.

Te envio un abrazo.
« Última modificación: 28 Abril 2016, 04:55 am por NOB2014 » En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: Liberar memoria asignada con malloc, después de salir de la función [C].
« Respuesta #8 en: 28 Abril 2016, 04:28 am »

Mi consejo........ estudia el vocabulario.......veras que se repite ......si lo conoces, luego la gramatica inglesa es bastante cercana a la nuestra, al menos se estructura en igual en terminos generales (sujeto-verbo-objeto)
En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sumar el numero de “a” que contiene la cadena asignada a una función [python]
Programación General
bichotg 5 3,705 Último mensaje 22 Febrero 2012, 04:33 am
por Novlucker
malloc dentro de una funcion
Programación C/C++
erest0r 2 2,083 Último mensaje 18 Diciembre 2013, 19:05 pm
por erest0r
Liberar memoria asignada a una estructura
Programación C/C++
David8 1 2,124 Último mensaje 24 Mayo 2014, 23:50 pm
por rir3760
(Pregunta) Que pasa con la memoria asignada al cerrar el programa
Programación C/C++
Seyro97 7 2,444 Último mensaje 26 Mayo 2015, 17:23 pm
por Peregring-lk
[C] Memoria dinámica. Malloc, Realloc
Programación C/C++
GGZ 1 2,688 Último mensaje 19 Noviembre 2015, 01:44 am
por GGZ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines