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.
Si, siempre que realloc no retorne null ya libero la memoria pasada como primer parametro.
« Última modificación: 18 Agosto 2015, 01:15 am por Eternal Idol »
En línea
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
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?
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).
En línea
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón