malloc y realloc

David
18 de Septiembre del 2003
Mi duda es que si en el main de un programa realizo un malloc de un vector y despues sobre una rutina realizo un realloc de ese vector pasado como parámetro... ¿ Seguira siendo accesible mas tarde desde el main?.... extiende memoria realloc localmente a la rutina y desaparece al salir?


Gracias un saludo....

chuidiang
18 de Septiembre del 2003
El realloc() extiende la memoria y esta permanece luego en el main(), lo que pasa es que será una zona de memoria distinta y el puntero original no te valdrá, tendrás que apuntarlo al nuevo sitio.

Dos cosas:

- acuerdate de liberar el espacio original si realloc() te devuelve una direccion distinta de la original.

- recuerda que si haces
funcion (int *p)
{
p = realloc (p, ...);
}

cuando salgas al main, el parametro seguira apuntando a la memoria original, y no a la nueva. La forma de hacerlo es

int *funcion (int *p)
{
return realloc (p, ...);
}


Se bueno.