Ho appena esaurito lo stack al lavoro, era un database ed eseguiva alcuni thread, in pratica lo sviluppatore precedente aveva gettato una grande matrice nello stack e lo stack era basso in ogni caso. Il software è stato compilato utilizzando Microsoft Visual Studio 2015.
Anche se il thread aveva esaurito lo stack, è stato interrotto in modo silenzioso e proseguito, esso si è sovrapposto solo quando si è trattato di accedere al contenuto dei dati nello stack.
Il miglior consiglio che posso dare è quello di non dichiarare matrici sullo stack - soprattutto in applicazioni complesse e in particolare nei thread, invece di usare heap. Ecco a cosa serve:)
Inoltre, tieni presente che potrebbe non fallire immediatamente quando si dichiara lo stack, ma solo per l'accesso. La mia ipotesi è che il compilatore dichiari lo stack sotto Windows "ottimisticamente", cioè supporterà che lo stack sia stato dichiarato ed abbia dimensioni sufficienti fino al momento in cui lo si usa e poi scopre che lo stack non è lì.
Diversi sistemi operativi possono avere diverse politiche di dichiarazione dello stack. Per favore lascia un commento se sai quali sono queste politiche.
Sai che puoi implementare la ricerca in profondità senza ricorsione, giusto? – Sebastian
No, non so, per favore, spiegami. – avd
Ho fatto un piccolo esempio di DFS senza ricorsione nella mia risposta –