• C/C++

 #444563  por Pino1952
 
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
 #444564  por NvK
 
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
 #444574  por Baal_30
 
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 :)
 #444576  por Pink
 
Como NvK no esta. estoy seguro que se refiere a free @Baal_30.


Saludos
 #444600  por NvK
 
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.
 #444608  por Baal_30
 
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! :)