Hola NvK.
Muchas gracias por la explicación, ahora me queda más claro a pesar de que no llegue todavía a estudiar memoria dinámica, estoy en estructuras anidadas y array de estructuras.-
Si sos el que me imagino un gran abrazo y prometo no postear más para no ser una pesadilla como en el pasado.-

Saludos.-
Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
No eres pesadilla, esta bien no entender algo y mejor aun corregir esa duda... así se aprende(lo peor hubiera sido que te quedes con esa pregunta), la escalera del conocimiento es fractal e infinita, pregunta las veces que sea si tienes mas dudas, si no, puedes hacerlo por mensaje privado, un abrazo tambien
Nvk gracias por todas las explicaciones ¡! Yo si que estoy siendo tu pesadilla jaja

Una cosilla más, a lo de liberar memoria, te refieres con el "free" ¿no?

Gracias :)
Gracias por contestar pink efectivamente no estaba...
Bueno para el código final para liberar correctamente esta así:
/* Dinamicamente */
char **p;
int i;

p= (char **)malloc(5 * sizeof(char *));
for(i=0;i<5;i++)
  p[i]= (char*)malloc(TAM_BLOQUE_ARRAY*sizeof(char *));
// Resto de código
...
// Una vez terminado para liberar memoria correctamente
// primero hacemos:
for(i=0;i<5;i++)
  free(p[i]);
// Y finalmente el tamaño del array
free(p)
Como ves esto lo que hara sera reservar memoria para su uso, una vez terminado el programa
liberar "celda por celda"(en este caso un total de 5) y luego el array completo que era de 5
indices.
PD: si en vez de declarar char **p; lo hubieramos hecho char *p[5]; no era necesario el último free(p), ya que el tamaño es estatico solo liberaremos la memoria usada...

EDITO: también me olvidaba de decir que TAM_BLOQUE_ARRAY como su nombre lo indica es el tamaño que tendra ese indice de array es decir si hicieramos esto:
p[3]= (char*)malloc( 15*sizeof(char *));
Estariamos diciendolo a la 3º posicion del array p que tendra un tamaño de 15 y ese sera el tamaño maximo que podra "guardar" esa celda.
Que grande NvK, Gracias por la info

Parece que lo de liberar la memoria no es muy complicado y es algo que sí o sí hay que tener en cuenta.

Merci! :)
Responder

Volver a “C/C++”