Linker, loader en uitvoerbare formaten

Welke eigenschap van de .bss-sectie is juist?

  1. AHet is het gebied waar lokale variabelen van een functie bij elke aanroep worden geplaatst
  2. BHet is het gebied voor variabelen zonder beginwaarde (of met 0); in het bestand wordt alleen de grootte vastgelegd en bij het laden wordt het met 0 gevuld
  3. CHet is een niet-beschrijfbaar gebied waar constante tekenreeksen staan
Antwoord en toelichting tonen

Antwoord: B. Het is het gebied voor variabelen zonder beginwaarde (of met 0); in het bestand wordt alleen de grootte vastgelegd en bij het laden wordt het met 0 gevuld

Globale en statische variabelen waarvoor geen beginwaarde is geschreven, beginnen volgens de regels van C op 0. Als de inhoud geheel uit nullen bestaat, is het verspilling om nullen in het bestand op te slaan, dus legt de .bss-sectie alleen de grootte vast en reserveert de loader geheugen en vult dat met 0. Bij bijvoorbeeld „static char buf[1000000];” wordt het uitvoerbare bestand niet 1 MB groter.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Linker, loader en uitvoerbare formaten

  1. Het uitvoeren van het C-fragment „char *p = "hello"; p[0] = 'H';” leidt in veel omgevingen tot abnormale beëindiging. Wat is de juiste reden?
  2. Welke combinatie van de bovenstaande globale variabelen staat in het algemeen in de .bss-sectie?
  3. Waar wordt tijdens uitvoering een in een C-functie gedeclareerde lokale variabele (automatische variabele) zonder static geplaatst?
  4. Uit welk gebied van het proces wordt het met malloc in C gereserveerde geheugen in het algemeen genomen?
  5. Welke volgorde van de geheugenindeling van een gangbaar proces op Linux en dergelijke, van laag naar hoog adres, is juist?

Vergelijkingen bij dit onderwerp