2008-10-01 46 views
9

¿Hay alguna forma de aumentar el tamaño de pila de una aplicación de Windows en tiempo de compilación/enlace con GCC?Aumentar tamaño de pila en Windows (GCC)

+0

¿Alguien podría explicarme qué significa Incrementar el tamaño de la pila? marco de pila es una porción ocupada por una función en la pila. y la pila se decide por el sistema operativo, ¿verdad? ¿Cómo lo ayuda 'editbin'? ¡Estoy confundido! – claws

Respuesta

6

Puede ejecutar editbin después del enlace.

+0

Definitivamente podría, y esto parece ser lo que inevitablemente tendré que hacer, pero estaba buscando una forma de hacerlo en el momento del enlace. Gracias sin embargo. – Landon

0

Al crear subprocesos usa el paremater dwStackSize, pero no estoy seguro de cómo cambiar el tamaño del subproceso principal, esto indica que está en el encabezado del exe, por lo que puede ser una opción para el compilador/vinculador, else necesita encontrar la parte relevante del encabezado y cambiarlo usted mismo.

http://msdn.microsoft.com/en-us/library/ms686774(VS.85).aspx

17

IIRC, En GCC puede proporcionarle la --stack, parámetro [bytes] a ld.

E.g.

gcc -Wl,--stack,16777216 -o file.exe file.c 

Para tener una pila de 16Mib, creo que el tamaño predeterminado es 8Mib.

+0

Esto es lo que estaba buscando originalmente. Lamentablemente, no he tenido suerte con esto en Windows. ¿Tienes? – Landon

+1

+1 Esto realmente funciona cuando lo probé en gcc 4.5.2. Sin este modificador, los programas compilados comienzan a fallar segwaying con tamaños de matriz estática ~ 500k. Después de aplicar este interruptor, pude aumentar el tamaño hasta 3 millones de elementos sin incidentes. – greatwolf

2

Hay dos tamaños de pila en Windows. El tamaño inicialmente comprometido y el tamaño total reservado. Puede establecer ambos con una declaración STACKSIZE en un archivo .def.

Cuestiones relacionadas