Linker, Loader und ausführbare Formate

Welcher Vorteil ergibt sich daraus, Heap und Stack eines Prozesses mit einem großen freien Bereich dazwischen in entgegengesetzte Richtungen wachsen zu lassen?

  1. ADer freie Bereich kann flexibel von beiden genutzt werden, auch wenn vorher nicht bekannt ist, wer wie viel braucht
  2. BHeap und Stack können gleichzeitig dieselben Adressen verwenden, sodass sich der Speicher verdoppelt
  3. CDer Stack kann nie mehr überlaufen
Antwort und Erläuterung anzeigen

Antwort: A. Der freie Bereich kann flexibel von beiden genutzt werden, auch wenn vorher nicht bekannt ist, wer wie viel braucht

Der Heap wächst zu größeren, der Stack zu kleineren Adressen; der freie Bereich dazwischen steht daher sowohl Programmen mit viel Heap-Bedarf als auch Programmen mit viel Stack-Bedarf zur Verfügung. Würde jedem eine feste Größe zugewiesen, könnte einer überlaufen, obwohl beim anderen Platz übrig ist. Für den Stack ist jedoch häufig eine Obergrenze festgelegt, und zu tiefe Rekursion überschreitet sie und führt zum Stack Overflow.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Welche Aussage zum statischen Linken ist richtig?
  2. Welcher Vorteil des dynamischen Linkens (Shared Libraries) ist richtig?
  3. Ein dynamisch gelinktes Programm startete nicht, nachdem es auf einen anderen Computer kopiert und ausgeführt wurde. Was ist die wahrscheinlichste Ursache?
  4. Was bindet der Linker in die ausführbare Datei ein, wenn er mit einer statischen Bibliothek (.a-Datei) linkt?
  5. Beim GNU-Linker kann es zu einem Fehler wegen einer undefinierten Referenz kommen, wenn eine statische Bibliothek wie in „gcc -lmylib main.o“ vor der Objektdatei steht, die sie verwendet. Welcher Grund ist richtig?

Vergleiche zu diesem Thema