[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