Liberar memoria asignada con malloc, después de salir de la función [C].

Iniciado por NOB2014, 27 Abril 2016, 21:23 PM

0 Miembros y 1 Visitante están viendo este tema.

NOB2014

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. -

#include <stdio.h>
#include <stdlib.h>

int *asignar_Array(int size, int valor);

int main( void ){
size_t i;
int *vector = asignar_Array(5,45);

for( i=0; i<5; i++ ){
printf("\n %d", vector[i]);
}

free(vector);

return (EXIT_SUCCESS);
}

int *asignar_Array(int size, int valor) {
size_t i;
int *arr = (int*)malloc( size * sizeof(int ));

for( i=0; i<size; i++ ) {
arr[i] = valor;
}

return arr;
}



Saludos.
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

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.


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.

NOB2014

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

FILE *f = fopen(ruta, modo);

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

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

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

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.

HardForo

Cita de: MAFUS 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.

;-)
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

NOB2014

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



Saludos.
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

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 (cpp) [Seleccionar]
int* vector = allocateArray(5,45);
free(vector);


Te invito a que vuelvas a leer mas detenidamente esta parte

NOB2014

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.
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

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)
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *