Discussion:
punteros
(demasiado antiguo para responder)
trasgo
2005-03-01 22:36:49 UTC
Permalink
Una pregunta tonta pero que puede llevar a muchos errores:
A todos lo punteros que declare tengo que liberar su contenido con la
funcion free()?

Vamos, que si en todas las funciones tengo q liberar su memoria, o como es
una funcion, cuando termine de ejecutarse su codigo, la memoria se libera
sola.
Bartomeu
2005-03-01 23:21:22 UTC
Permalink
Post by trasgo
A todos lo punteros que declare tengo que liberar su contenido
con la funcion free()?
A todos los punteros que declares no. Sólo a los punteros a los que asignes
memoria con una función malloc() o equivalente.
Post by trasgo
Vamos, que si en todas las funciones tengo q liberar su memoria, o
como es una funcion, cuando termine de ejecutarse su codigo, la
memoria se libera sola.
La memoria que reserva el compilador (variables locales en la pila), la
libera el compilador. La memoria que reserva el programador con malloc, la
debe liberar el programador con free. No es obligatorio, pero es altamente
recomendable.
Antoine Leca
2005-03-04 17:36:11 UTC
Permalink
Post by trasgo
A todos lo punteros que declare tengo que liberar su contenido
con la funcion free()?
No. Solo sueles tener el mismo número de free() como de malloc().
Lo más facil est siempre tener el malloc() al lado del free(); y si hay una
llamada a una función que haga un malloc(), al lado habrá una llamada al
free(). Y tanta de la una como de la otra. Con eso te ahorrarás problemas de
fuga de memoría.
Post by trasgo
Vamos, que si en todas las funciones tengo q liberar su memoria, o
como es una funcion, cuando termine de ejecutarse su codigo, la
memoria se libera sola.
Por favor no hagas eso. Es verdad que funcionará para el código que escribes
ahora, para estudiar. Pero no funcionaría cuando el mismo código será
integrado en un proyecto más amplio (lo más típico es si debe estar en un
servidor que se execute durante días).


Antoine
Eduardo Sánchez de la Chica
2005-03-16 15:44:52 UTC
Permalink
No tienes porque eliminar la memoria, salvo que hagas asignacion dinamica y
ese bloque estuviera ocupado, entonces para no pisar lo que haya si tendrias
que liberrarlo, pero en programas que no sean muy complejos no hay porque
hacerlo, aunque hacerlo puede quedar mas elegante si es para entregarlo al
profesor, segun veas.
Post by trasgo
A todos lo punteros que declare tengo que liberar su contenido con la
funcion free()?
Vamos, que si en todas las funciones tengo q liberar su memoria, o como es
una funcion, cuando termine de ejecutarse su codigo, la memoria se libera
sola.
Loading...