Éditeurs de liens, chargeurs et exécutables

Quelle caractéristique de la section .bss est correcte ?

  1. AC'est la zone où les variables locales d'une fonction sont placées à chaque appel
  2. BC'est la zone des variables sans valeur initiale (ou à 0) ; seule sa taille est enregistrée dans le fichier, et elle est remplie de 0 au chargement
  3. CC'est une zone non inscriptible où sont placées les chaînes constantes
Afficher la réponse et l'explication

Réponse : B. C'est la zone des variables sans valeur initiale (ou à 0) ; seule sa taille est enregistrée dans le fichier, et elle est remplie de 0 au chargement

Les variables globales et statiques sans valeur initiale commencent à 0 selon les règles du C. Comme il serait inutile de stocker une suite de 0 dans le fichier, seule la taille de la section .bss est enregistrée, et le chargeur réserve la mémoire et la remplit de 0. Ainsi, même avec « static char buf[1000000]; », l'exécutable ne grossit pas de 1 MB.

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

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

  1. 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 ?
  2. Parmi les variables globales ci-dessus, quelle combinaison correspond à celles généralement placées dans la section .bss ?
  3. Où est placée pendant l'exécution une variable locale (variable automatique) sans static déclarée dans une fonction C ?
  4. De quelle zone du processus provient généralement la mémoire allouée par malloc en C ?
  5. Quel est l'agencement mémoire correct d'un processus typique sous Linux notamment, des adresses basses aux adresses hautes ?

Comparatifs sur ce thème