Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Stack Owerflow

Iniciado por zukutrule, 06 de Febrero de 2004, 07:39:06 AM

« anterior - próximo »

zukutrule

 Olas denuevos, komento, tengo 1 clase "objeto3d" y declaro un array de 55 elementos.. , todo bien.. declaro 56, y me salta un stak owerflow, si alguien sabe komo katso solucionarlo, agradecido stoy

CoLSoN2

 a que te refieres con "declaro 56"?
a hacer int a[56]; en vez de int a[55]; ? o a qué?
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

DraKKaR

 Parece que diga que si declara un array de 55 elementos todo va bien, pero que si lo declara de 56 le salta ese error.
A mi me salio un error que rezaba el mismo mensaje, se debía a la gran recursividad que tenia en un algoritmo. Se solucionó poniendo en el Visual Studio:
Project -> Settings -> Link -> Output -> reserve memory = 100000000

XD
No estoy seguro de que fuera esa la ruta exacta, no puedo mirarlo porque ahora estoy en linux ;P

Zaelsius

 ¿Por qué no pruebas a crear los 56 objetos dinámicamente (con new o malloc)?

fiero

 ¿Las declaras dentro de una función? (Aunque sea la función principal). Los datos que se declaran dentro de las funciones se crean en la memoria de pila, por eso si declaras más de la cuenta  puedes desbordar (overflow) la pila (stack). Los datos declarados dentro de funciones deberían ser solo datos auxiliares temporales, por eso la pila no es muy grande (1MB por defecto)

Como bien dice DraKKaR, esto es lo que pone en la ayuda del Visual Studio para aumentar la memoria de pila:

CitarTo find this option in the development environment, click Settings on the Project menu. Then click the Link tab, and click Output in the Category box. The Reserve text box (or in the reserve argument on the command line) specifies the total stack allocation in virtual memory. The default stack size is 1 MB. The linker rounds up the specified value to the nearest 4 bytes.

pero la mejor solución en este caso es la que dice ZaelSiuS, declarar los datos dinámicamente, o declararlos de forma global, los datos globales no se crean en memoria de pila.

Por cierto, yo tuve un error de este tipo que me trajo de cabeza, porque programo en w2000 y por lo visto este error lo arregla el sistema operativo asignando más memoria a la pila dinámicamente. Sin embargo el programa en w98 cascaba. Tuve que instalar el VC en un ordenador con w98 para darme cuenta del error...

un saludo
www.videopanoramas.com Videopanoramas 3D player






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.