Linker, loader en uitvoerbare formaten

Welke uitspraak is juist over de waarde bij het eerste gebruik van lokale en globale variabelen in C waarvoor geen beginwaarde is geschreven?

  1. ABeide beginnen altijd op 0
  2. BLokale variabelen beginnen op 0, maar de waarde van globale variabelen staat niet vast
  3. CGlobale variabelen beginnen op 0, maar de waarde van lokale variabelen staat niet vast (onbepaald)
Antwoord en toelichting tonen

Antwoord: C. Globale variabelen beginnen op 0, maar de waarde van lokale variabelen staat niet vast (onbepaald)

Globale en statische variabelen staan in .bss en worden bij het begin van het programma met 0 gevuld, dus beginnen op 0. Lokale variabelen worden bij elke functie-aanroep op de stack gemaakt, en omdat elke keer met 0 vullen tijd kost, kunnen daar nog data staan van een eerder gebruik van die plaats. Het lezen van een niet-geïnitialiseerde lokale variabele kan per uitvoering een ander resultaat geven, dus ze worden altijd geïnitialiseerd gebruikt.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Bij herhaald malloc en free kan het voorkomen dat, ook al is het totaal aan vrij geheugen ruim voldoende, een groot gebied niet meer in één keer kan worden gereserveerd. Hoe heet dit verschijnsel?
  2. Welk voordeel is juist van het zetten van de symboolzichtbaarheid (visibility) op „hidden” voor interne functies, terwijl bij het maken van een gedeelde bibliotheek alleen de van buiten gebruikte functies worden gepubliceerd?
  3. Welk mechanisme waardoor in C++ de constructors van globale objecten vóór main worden uitgevoerd, is juist?
  4. Welke uitspraak over het objectbestand (.o) dat de compiler uit één bronbestand voortbrengt, is juist?
  5. Wat is de juiste hoofdtaak van de linker?

Vergelijkingen bij dit onderwerp