Test Foro de elhacker.net SMF 2.1

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