Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

[ILINK32 Error] Fatal: Exceeded memory limit for block SegRe

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: [ILINK32 Error] Fatal: Exceeded memory limit for block SegRe Responder citando

He añadido en el fuente de mi programa hecho en Code Gear 2007 simplemente un if y me sale este error.
Si añado cualquier condicional me sale lo mismo y si lo quito vuelve a compilar y linkar sin problemas
Parece que indica que he de asignarle mas memoria en alguna configuración ,pero en este momento no se que hacer

Agradezco una ayuda

Phil
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Yo intentaría aumentar max heap size en las opciones del proyecto->Linker.

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias por contestar Escafandra.

El valor estaba en 0x00100000, lo he puesto en 2147483647 que segun el propio borland es el valor máximi pero sigue sin funcionar

Lo peor de todo es que aparentemente el linker me está diciendo que basta, que no puedo escribir ni una linea mas

Menudo problemón tengo

Phil
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

¿Tan grande es tu código que no puedes agregar mas instrucciones?
philips escribió:
El valor estaba en 0x00100000, lo he puesto en 2147483647 que segun el propio borland es el valor máximi pero sigue sin funcionar

No me parece que tenga sentido. Si amplias el límite deberías poder agregar mas código. No creo que el problema venga por aquí. ¿Har probado a aumentar el espacio de la pila?. Imagino que el Image Base no lo has cambiado, para las aplicaciones debe ser 0x00400000.

Revisa bien las opciones del proyecto, intuyo que es ahí donde radica el problema.

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Borro el contenido porque se ha ducplicado el post

Phil


Ultima edición por philips el Lun 19 Ene, 2009 9:49 am, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

La última línea de mi código al lado izquierdo pone 104329.Me imagino que una herramienta como Builder 2007 será capáz de compilar bastantes mas líneas

Respecto a los valores que me dices te los pongo:

Valores originales con los que compilaba y linkaba bien el proyecto hasta añadir el if que origina el problema
Base address: 0x00400000
Minimun Stack size: 0x00002000
Maximum Stack size : 0x00100000
Minimum heap size: 0x00001000
Maximum heap size: 0x00100000
Section flags e Image flags (en blanco)

He reemplazado el "1 " de Max Stack y de Max heap size por un "4" pero nada, el mismo error
[ILINK32 Error] Fatal: Exceeded memory limit for block SegRelocs in module Unit1.cpp

He buscado por Inet y solo he encontrado algunos posts de gente que le sucede lo mismo incluso con la version nueva 2009 pero ninguna solucion posible

Sigo buscando desesperado

Gracias

Phil
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Revisa también las opciones de compilación, tipo de procesador, data aligment y las optimizaciones.

También revisa errores de sintaxis que generen un error o lógico, asignaciones de memoria demasiado grandes en tiempo ce compilación, el uso de librerías externas o de terceros....

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Perdon por la tardanza en contestar

He cambiado el tipo de procesador a Pentium Pro y me ha ido dejando añadir lineas hasta hoy mismo en que se ha vuelto a negar a dejarme seguir añadiendo lineas

Quizás se pueda cambiar el tipo de procesador de otro modo.
A ver si a Cesar o Leo se les ocurre alguna solucion posible

Phil
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Lo siento, nunca he tenido problemas de este tipo, y a ciegas sin el proyecto no puedo hacer nada.

Asegúrate de tener instaladas todas las actualizaciones que hayan salido para la versión que utilices.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Gracias Leo.
No obstante comentarte que he buscado un poco por Inet y hay personas que han tenido el mismo problema que yo, incluso algunos de ellos con el novísimo Builder 2009

Yo en primera instancia como he comentado anteriormente lo he solventado cambiando el tipo de procesador a Pentium Pro en las propiedades del proyecto, hasta que al fina he tenido que optar por crear una Dll y colocar en ella parte del código del principal

Desconozco so es posible definir al principio del fuente el tipo de procesador a usar

Realmente extraño, aunque mi código es un poco extenso (mas de 120 mil líneas)

Si lo solvento de alguna forma lo comentaré aqui

Saludos

Phil
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Compartiendo el mensaje de _Leo, considero que el problema no esta en el Builder, pues yo mismo he compilado proyectos extensos, algunos de hasta mas de 40 Forms ( ventanas, dialogos, etc etc), sobrepasando en mucho los limites de las pilas y no he tenido ese fallo.

Me di a la tarea de buscar información y como tu dices también les ha sucedido a otras personas, pero tambien he visto que las personas no han tenido respuesta, pues no es un error tan ordinario.

Quiero suponer que la creación de Formularios no esta siendo favorable por parte de tu sistema y dejas formularios con componente que te consumen demasiada memoria, (Skins o muchos bmp en tus imágenes).

Muchas veces queremos transportar TODO en un solo ejecutable pero para ello existen las DLL o los BPL para segmentar el código. pues no todo debe cargarse de un "jalón" en la carga del EXE.

Considera esto, imágina a Windows el S.O que fuera un Ejecutable de 2Gb creo que tendria que tener 64Gb de Ram para poder ejecutarlo, por ello es la segmentación de codigo a travez de Dll's o librerias (Lib/Obj/etc etc)


Y estoy casi 100% seguro que es por ahi el tema.

Vamos puedo asegurarte que si marcas las opciones de Dynamic RTL y Packages tu programa se compila sin ningun problema. puede que el ejecutable sea demasiado extenso para hacerlo.

o bien tu ejecutable es demasiado grande que sin darte cuenta lo estas metiendo en modo debug y ello haga que no le quede a BCB para "debugear" tu codigo, intenta compilarlo en modo release.

Saludos.
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.