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?
- ABeide beginnen altijd op 0
- BLokale variabelen beginnen op 0, maar de waarde van globale variabelen staat niet vast
- 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.
Verder: nog 9 vragen over Linker, loader en uitvoerbare formaten