Allocation de mémoire pour les variables globales en C : Stack vs Heap
En C , lorsqu'une structure de données est déclarée globalement, la question se pose de savoir si il consomme de la mémoire de pile ou de la mémoire tas. Pour comprendre cela, nous examinons la disposition de la mémoire d'un processus C typique.
Disposition de la mémoire d'un processus C
Un processus C alloue généralement cinq zones de mémoire différentes :
Allocation globale des variables
Lorsqu'une variable globale est déclarée, sa mémoire est allouée soit dans le segment de données, soit dans le bss segment.
Par conséquent, les variables globales sont stockées dans le segment de données ou segment bss, qui font partie du mémoire statique allouée au programme.
Exemple
Dans le donné Par exemple, le tableau arr est une variable globale de type struct AAA. Il sera alloué soit dans le segment de données, soit dans le segment bss, selon qu'il est initialisé (a des valeurs par défaut) ou non initialisé (contient des valeurs inutiles).
Conclusion
En résumé, les structures de données globales en C consomment de la mémoire de la mémoire statique allouée au programme, notamment du segment de données ou segment bss, qui ne font partie ni de la pile ni de la mémoire tas domaines.
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!