Ver Mensaje Individual
  #14 (permalink)  
Antiguo 14/04/2015, 10:41
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Declarar array de struct sin conocer la cantidad de elementos [C]

Hola Daniel.

Y sí, yo te diría que es casi una regla universal, la información de mejor calidad está en inglés (por lo menos para los que no leemos ruso o chino, que no podría saberlo). Por ejemplo, el libro que estás leyendo fue escrito en inglés, y después un traductor hizo lo mejor que pudo para que podamos leerlo en castellano.

La idea más básica es que las variables de duración automática (de esas que se declaran dentro de una función) se crean en la pila (stack), que tiene un tamaño limitado (puede ser 1 MB o más, depende del compilador y sus seteos --que entre paréntesis dentro del paréntesis, mira de qué manera abominable estamos hablando...)
Y entonces, como la stack tiene una capacidad bastante pobre, comparada con el heap (el "montículo" dio libre y guarde), que es donde se crean las variables con malloc, por ejemplo, y que no tiene esa limitación.
Una u otra forma de creación tienen sus pros y sus contras, que para no decir de apuro y mal, te paso la dirección de un documento donde lo explican muy prolijamente:
http://www.inf.udec.cl/~leo/teoX.pdf
y que lo escribe Leo Ferres del departamento de Ciencias de la Computación de la Universidad de Concepción, de Chile, en inglés, quizá para ser tomado en serio :)

Por lo que veo en el código
Código:
Super tSuper[ok];
tSuper se crea como un array de ok estructuras de tipo Super, con el mecanismo del VLA, o sea, en la stack. Decía eso de poner algún control, para que el tamaño de ese array no supere la capacidad de la stack (ese MB o 8 MB que puede tener por omisión ("por defecto", jé).