Bei der Arbeit ging mir gerade der Stapel aus, es war eine Datenbank und es wurden einige Threads ausgeführt. Im Grunde hatte der vorherige Entwickler ein großes Array auf den Stapel geworfen, und der Stapel war sowieso niedrig. Die Software wurde mit Microsoft Visual Studio 2015 kompiliert.
Obwohl der Thread keinen Stapel mehr hatte, schlug er stillschweigend fehl und fuhr fort. Der Stapel lief nur über, wenn er auf den Inhalt der Daten auf dem Stapel zugreifen wollte.
Der beste Rat, den ich geben kann, ist, keine Arrays auf dem Stapel zu deklarieren - insbesondere in komplexen Anwendungen und insbesondere in Threads -, sondern Heap zu verwenden. Dafür ist es da;)
Denken Sie auch daran, dass es beim Deklarieren des Stapels möglicherweise nicht sofort fehlschlägt, sondern nur beim Zugriff. Ich vermute, dass der Compiler den Stapel unter Windows "optimistisch" deklariert, dh er geht davon aus, dass der Stapel deklariert wurde und eine ausreichende Größe hat, bis er verwendet wird, und stellt dann fest, dass der Stapel nicht vorhanden ist.
Unterschiedliche Betriebssysteme haben möglicherweise unterschiedliche Richtlinien für die Stapeldeklaration. Bitte hinterlassen Sie einen Kommentar, wenn Sie diese Richtlinien kennen.