Éditeurs de liens, chargeurs et exécutables

Où est placée pendant l'exécution une variable locale (variable automatique) sans static déclarée dans une fonction C ?

  1. ADans la section .data
  2. BSur la pile (ou dans un registre)
  3. CDans le tas
Afficher la réponse et l'explication

Réponse : B. Sur la pile (ou dans un registre)

Les variables locales sont créées dans le cadre de pile lors de l'appel de la fonction (l'optimisation peut aussi les placer uniquement dans des registres) et disparaissent au retour. Ainsi, même si une même fonction est appelée plusieurs fois de façon imbriquée par récursion, chaque appel dispose de ses propres variables. Il n'existe pas de section pour les variables locales dans l'exécutable ; la zone est réservée en déplaçant le pointeur de pile au début de la fonction.

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

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

  1. De quelle zone du processus provient généralement la mémoire allouée par malloc en C ?
  2. Quel est l'agencement mémoire correct d'un processus typique sous Linux notamment, des adresses basses aux adresses hautes ?
  3. Quel est l'avantage de l'agencement qui fait croître le tas et la pile d'un processus en sens opposés, avec un vaste espace libre entre eux ?
  4. Quelle description de l'édition de liens statique est correcte ?
  5. Quel est l'avantage de l'édition de liens dynamique (bibliothèques partagées) ?

Comparatifs sur ce thème