Maison > Article > développement back-end > Quel est l’impact des références C sur l’allocation de mémoire ?
En C , une référence est une variable qui fait référence à l'adresse d'une autre variable. Lors de l'examen de l'allocation de mémoire, cela soulève des questions sur l'espace occupé par les références par rapport à d'autres types de données.
Considérez l'extrait de code :
int i = 42; int& j = i; int k = 44;
Comme prévu, les variables i et k occupent chacune 4 octets sur la pile. Cependant, j ne prend pas de place en mémoire. En effet, une référence ne stocke pas elle-même une valeur ; il se lie simplement à l'adresse de la variable à laquelle il fait référence, agissant effectivement comme un alias.
Alors, où une référence prend-elle de la place lorsqu'elle est passée comme argument de fonction ?
Quand une référence est passé, le compilateur lui attribue un emplacement temporaire sur la pile de la fonction. Cet emplacement stocke l'adresse de la variable référencée, permettant à la fonction d'y accéder directement. Dans notre exemple, lorsque j est passé à une fonction, la pile de la fonction contient l'adresse de la variable i.
Concernant les tableaux de références, le Standard C interdit explicitement leur création :
int&[] arr = new int&[SIZE]; // compiler error! array of references is illegal
Cela est dû au risque de références suspendues, qui peuvent indiquer une mémoire désallouée. En interdisant les références à des tableaux, C garantit la sécurité de la mémoire.
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!