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 -
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.
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).
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!