SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: Jesmi89 en Lunes 18 de Octubre de 2010, 04:00

Título: Porque este error en el Codigo
Publicado por: Jesmi89 en Lunes 18 de Octubre de 2010, 04:00
Hola a todos, quisiera saber si alguien posria atudarme a saber porq me aparece el siguiente error en este codigo.
Título: Re: Porque este error en el Codigo
Publicado por: ProfesorX en Lunes 18 de Octubre de 2010, 19:05
Cita de: "Jesmi89"
Hola a todos, quisiera saber si alguien posria atudarme a saber porq me aparece el siguiente error en este codigo.
  • Too much global data defined in file[/color]

El problema es que estas sobrepasando el tamaño maximo que puedes utilizar para variables globales, que si no mal recuerdo es de 2 elevado a la 16, o sea, 65536 bytes.

Solamente haz cuentas:

El tamaño (en bytes) de tu estructura alumnos es 7+45+55+45+2+2+20=176
Luego defines 4 arreglos de 300 alumnos, por lo tanto, la cantidad de memoria utilizada es 4 * 300 * 176 = 211200, y como dje antes, el maximo es 65536.

Una solucion podria ser que utilices memoria dinamica (new o malloc), en lugar de memoria estatica, para definir tus arreglos, ya que la memoria dinamica no tiene ese limite, solo esta limitada por la cantidad de memoria que tengas instalada en tu maquina, pero aun asi me parece que es exagerado que quieras los 300 * 4 registros de alumnos en la memoria.

La solucion, mas correcta a mi a parecer, es que solo leas una parte del archivo, de 1 a 20 registros a la vez, quizas un poco mas, pero no los 300, y que implementes un algoritmo que te permita tener acceso a tus 300 registros sin tener que subirlos todos a la memoria a la vez, (pista, busca informacion sobre hash y busqueda en archivos) que es demasiado ineficiente.

Saludos :)