Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: marcoma en 17 Agosto 2015, 17:46 pm



Título: ¿Como funciona exactamente realloc()?
Publicado por: marcoma en 17 Agosto 2015, 17:46 pm
Me gustaría saber si realloc ademas de asignar los valores a la nueva dirección de memoria
se encarga de liberar la memoria ocupada anteriormente.

Gracias  :-X


Título: Re: ¿Como funciona exactamente realloc()?
Publicado por: Hogger en 17 Agosto 2015, 20:03 pm
Hola,

Realloc() únicamente expande o contrae un bloque de memoria ya existente por lo que no libera la memoria ocupada anteriormente, i.e, expande/contrae un malloc()/calloc() anterior.

Los valores ya existentes en el bloque de memoria son preservados. Si se expande el bloque de memoria reservado, los valores del nuevo "pedazo" reservado son indeterminados.

http://www.cplusplus.com/reference/cstdlib/realloc/ (http://www.cplusplus.com/reference/cstdlib/realloc/)

Saludos.


Título: Re: ¿Como funciona exactamente realloc()?
Publicado por: Eternal Idol en 18 Agosto 2015, 01:13 am
Si, siempre que realloc no retorne null ya libero la memoria pasada como primer parametro.


Título: Re: ¿Como funciona exactamente realloc()?
Publicado por: marcoma en 18 Agosto 2015, 10:27 am
 en el enlace dice: The function may move the memory block to a new location
por tanto supongo que si que cambiara de dirección de memoria no? o lo hace solo al no poder re dimensionar desde esa dirección de memoria actual? ;D


Título: Re: ¿Como funciona exactamente realloc()?
Publicado por: Eternal Idol en 18 Agosto 2015, 11:36 am
Solo cambia la direccion cuando lo necesita pero tenes que guardar el retorno en una variable temporal y comprobar que no sea null, cuando no sea null ya podes asignarlo a la variable original sin problema (o sera igual o la memoria original estara liberada).