Linker, Loader und ausführbare Formate

Aus welchem Bereich eines Prozesses wird der mit malloc in C reservierte Speicher im Allgemeinen genommen?

  1. AAus der Section .text
  2. BAus dem Heap
  3. CAus der Section .rodata
Antwort und Erläuterung anzeigen

Antwort: B. Aus dem Heap

Der Heap ist der Bereich, in dem zur Laufzeit Speicher in der benötigten Größe angefordert und bei Nichtgebrauch mit free zurückgegeben wird. Kennzeichnend ist, dass sich Größe und Lebensdauer erst zur Laufzeit festlegen lassen. malloc verwaltet den freien Platz selbst und fordert bei Bedarf vom Betriebssystem eine Vergrößerung an (unter Linux über die Systemaufrufe brk oder mmap). Wird free vergessen, bleibt ungenutzter Speicher bestehen, was einen Speicherleck (Memory Leak) ergibt.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Linker, Loader und ausführbare Formate

  1. Welche Reihenfolge ist die richtige Speicheraufteilung eines üblichen Prozesses unter Linux u. a., von kleinen zu großen Adressen geordnet?
  2. Welcher Vorteil ergibt sich daraus, Heap und Stack eines Prozesses mit einem großen freien Bereich dazwischen in entgegengesetzte Richtungen wachsen zu lassen?
  3. Welche Aussage zum statischen Linken ist richtig?
  4. Welcher Vorteil des dynamischen Linkens (Shared Libraries) ist richtig?
  5. Ein dynamisch gelinktes Programm startete nicht, nachdem es auf einen anderen Computer kopiert und ausgeführt wurde. Was ist die wahrscheinlichste Ursache?

Vergleiche zu diesem Thema