Linker, Loader und ausführbare Formate
Was geschieht unter Linux u. a. im Allgemeinen, wenn eine zu tiefe Rekursion die Obergrenze des Stacks überschreitet?
- ADas Programm berührt die hinter dem Stack liegende, für Zugriffe gesperrte Guard Page und wird abnormal beendet
- BDas Betriebssystem lagert den Stack automatisch auf die Festplatte aus, sodass beliebig tief rekursiert werden kann
- CAlte Stack-Frames werden automatisch gelöscht, und die Berechnung wird korrekt fortgesetzt
Antwort und Erläuterung anzeigen
Antwort: A. Das Programm berührt die hinter dem Stack liegende, für Zugriffe gesperrte Guard Page und wird abnormal beendet
Der Stack hat eine Obergrenze, hinter der eine für Zugriffe gesperrte Guard Page liegt. Erreicht der Stack bei zu tiefer Rekursion diese, tritt ein Seitenfehler auf, und das Betriebssystem beendet das Programm (Segmentation Fault). Der Vorteil der Guard Page ist, dass das Programm gestoppt werden kann, bevor andere Daten zerstört werden. Dasselbe passiert bei großen Arrays als lokalen Variablen; große Daten legt man daher sicherer auf dem Heap ab.