Me acabo de quedar sin pila en el trabajo, era una base de datos y estaba ejecutando algunos hilos, básicamente el desarrollador anterior había lanzado una gran matriz en la pila, y la pila estaba baja de todos modos. El software se compiló utilizando Microsoft Visual Studio 2015.
Aunque el hilo se había quedado sin pila, silenciosamente falló y continuó, solo se desbordó la pila cuando se trataba de acceder al contenido de la pila.
El mejor consejo que puedo dar es que no declare matrices en la pila, especialmente en aplicaciones complejas y particularmente en hilos, en su lugar use el montón. Eso es lo que está ahí;)
También tenga en cuenta que no puede fallar inmediatamente al declarar la pila, pero solo en el acceso. Mi suposición es que el compilador declara la pila bajo Windows "de manera optimista", es decir, asumirá que la pila ha sido declarada y tiene el tamaño suficiente hasta que se usa y luego descubre que la pila no está allí.
Diferentes sistemas operativos pueden tener diferentes políticas de declaración de pila. Por favor, deje un comentario si sabe cuáles son estas políticas.
¿Sabía que puede implementar búsquedas en profundidad sin recurrencia, ¿verdad? – Sebastian
No, no lo sé, por favor explique. – avd
He hecho un pequeño ejemplo de DFS sin recursividad en mi respuesta –