Maison  >  Article  >  développement back-end  >  Disposition de la mémoire du programme C

Disposition de la mémoire du programme C

WBOY
WBOYavant
2023-08-26 22:29:111212parcourir

La disposition de la mémoire d'un programme C est illustrée ci-dessous. Il y a très peu de niveaux. Ce sont -

  • Segment de pile
  • Segment de tas
  • Segment de texte
  • Segment de données

Disposition de la mémoire du programme C

Voyons maintenant quelle est la fonction de ces sections.

Sr.No Section et description
1 Pile

La pile de processus contient des données temporaires telles que des paramètres de méthode/fonction, des adresses de retour et des variables locales. C'est une zone de mémoire allouée aux variables automatiques et aux paramètres de fonction. Il stocke également l'adresse de retour lors de l'exécution d'un appel de fonction. La pile utilise le mécanisme LIFO (dernier entré, premier sorti) pour stocker les variables locales ou automatiques, les paramètres de fonction et pour stocker l'adresse suivante ou l'adresse de retour. L'adresse de retour fait référence à l'adresse à laquelle la fonction retourne une fois terminée. La taille de ce segment varie en fonction des variables locales, des paramètres de fonction et des appels de fonction. Le segment s'étend des adresses supérieures aux adresses inférieures.

2 Heap

Il s'agit de la mémoire allouée dynamiquement pendant l'exécution du processus. Il s'agit de la zone de mémoire allouée au stockage de mémoire dynamique (comme les appels malloc() et calloc()). La taille du segment varie également en fonction de l'allocation des utilisateurs. Le segment s'étend des adresses inférieures aux adresses supérieures.

Vérifions maintenant comment la taille des segments (segment de données et bss) change pour quelques exemples de programmes. La taille du segment peut être obtenue en exécutant la commande "size".

3 Texte

Cela inclut l'activité actuelle représentée par la valeur du compteur du programme et le contenu des registres du processeur. Il est représenté par la partie .text. Ceci définit la zone de la mémoire où le code d'instruction est stocké. C'est aussi une zone fixe.

4 Data

Cette section contient des variables globales et des variables statiques. Il est représenté par la section .data et .bss. La section .data est utilisée pour déclarer une zone mémoire où les éléments de données sont stockés pour le programme. Une fois qu'un élément de données est déclaré, cette section ne peut pas être développée et reste statique tout au long du programme. La section

.bss est également la section de mémoire statique, qui contient des tampons de données déclarées plus tard dans le programme. Cette mémoire tampon est remplie de zéros.

Le segment de données peut être divisé en deux autres parties.

Sr.No section et description 1 Segment de données d'initialisation

Il s'agit d'une partie de l'espace d'adressage virtuel du fichier objet ou du programme, composé de variables statiques non initialisées et globales. composition des variables. Le segment de données non initialisé est également appelé segment BSS (Block Started by Symbol).

2 Un - Segment de données d'initialisation

Il s'agit d'une lecture-écriture car la valeur de la variable peut être modifiée au moment de l'exécution. Le segment a également une taille fixe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer