Éditeurs de liens, chargeurs et exécutables

Dans quelle section est généralement placée une variable globale écrite hors de toute fonction en C sous la forme « int limit = 100; » ?

  1. A.data (données initialisées)
  2. B.bss (données non initialisées)
  3. C.text (langage machine)
Afficher la réponse et l'explication

Réponse : A. .data (données initialisées)

Les variables globales et statiques ayant une valeur initiale non nulle sont placées dans la section .data, et leur valeur initiale est stockée dans le fichier. Au chargement du programme, ce contenu est copié tel quel en mémoire ; limit vaut donc 100 au début de main. .data étant modifiable pendant l'exécution, c'est une zone où lecture et écriture sont autorisées.

S'entraîner sur ce thème Retour au thème

Autres questions sur Éditeurs de liens, chargeurs et exécutables

  1. Quelle caractéristique de la section .bss est correcte ?
  2. L'exécution de « char *p = "hello"; p[0] = 'H'; » en C provoque une terminaison anormale dans de nombreux environnements. Quelle en est la raison ?
  3. Parmi les variables globales ci-dessus, quelle combinaison correspond à celles généralement placées dans la section .bss ?
  4. Où est placée pendant l'exécution une variable locale (variable automatique) sans static déclarée dans une fonction C ?
  5. De quelle zone du processus provient généralement la mémoire allouée par malloc en C ?

Comparatifs sur ce thème