[C con Clase] Reserva dinámica memoria

Steven R. Davidson vze266ft en verizon.net
Mie Mar 5 17:54:53 CET 2008


Hola Ismael,

Ismael Camarero wrote:
> 
> Tengo una función que recibe cono argumento un doble puntero a char
> con el fin de crear un array dinámico que vaya creciendo a medida que
> llamo a la función. El array debe almacenar nombres de personas.
> 
> Con:
> 
>         p  = (char **)malloc(sizeof(char *)); 
>         *(p+0) = (char *)malloc(80*sizeof(char)); 
> 
> reservo memoria para un nombre (79 char + '\'')
> 
> Cuando llamo de nuevo a la funcion, quiero crear espacio en memoria
> para un segundo nombre. ¿Como lo hago? ?Debo emplear realloc  para
> filas y columnas o solo para las filas y crear un nuevo bloque de
> memoria (80 char) para las columnas?:
>        
>        p = (char **)realloc(p,2*sizeof(char *));
>        for(i=1; i

Efectivamente, usa 'realloc()' para aumentar la cantidad de punteros 
dobles a 'char', lo cual sirve a modo de "directorio" de nombres. Y 
luego crea la memoria para la cadena de caracteres que necesites. Puedes 
crear otra cadena de 80 caracteres o de cualquier tamaño, realmente.

p = (char **)realloc( p, 2*sizeof(char *) );
p[1] = (char *)malloc( 80 );


Espero que esto te ayude.

Steven






Más información sobre la lista de distribución Cconclase