Maison  >  Article  >  développement back-end  >  Est-il sécuritaire de conserver la référence mais de ne pas affecter les données à la variable réelle ?

Est-il sécuritaire de conserver la référence mais de ne pas affecter les données à la variable réelle ?

PHPz
PHPzavant
2024-02-08 21:42:09861parcourir

Est-il sécuritaire de conserver la référence mais de ne pas affecter les données à la variable réelle ?

php Editor Banana Lorsqu'on se demande s'il est sûr de conserver des références mais de ne pas attribuer de données à des variables réelles, nous devons comprendre comment fonctionnent les références et l'affectation de variables. En PHP, une référence est un alias qui pointe vers l'adresse mémoire d'une variable partageant le même espace mémoire. Lorsque nous conservons une référence mais n'attribuons pas les données à une variable réelle, nous créons en fait une référence à un espace plutôt qu'à des données concrètes. Cette approche est sûre dans certaines situations, mais il y a quelques mises en garde.

Contenu de la question

Je souhaite conserver une liste de références dans une tranche, mais je ne trouve aucune ressource en ligne expliquant est-il sûr de conserver une référence sans l'attribuer à une variable ?

Je veux dire, est-il possible pour le système d'exploitation d'écrire quelque chose dans l'adresse référencée à laquelle le programmeur ne s'attendait pas ?

Voici un exemple de code :

type ListItem [8]uint64

list := make([]*ListItem, 0)

list = append(list, &ListChunk{})
list = append(list, &ListChunk{})
list = append(list, &ListChunk{})

En d'autres termes, est-il garanti que les éléments de la tranche nommée list resteront les mêmes pendant l'exécution du programme, quel que soit le temps que cela prend ?

Solution

Probablement pas dans votre cas (la référence restera la même), mais cela dépend aussi de ce que votre programme en fait :

Le runtime Go ne modifie pas les références (pointeurs) stockées dans la tranche pendant la durée de vie du programme, mais il y a une condition : -Vous ne réaffectez pas la tranche ou ses pointeurs d'élément (tableau de [8]uint64) dans la fonction. Tant que vous ne réaffectez pas une nouvelle valeur aux éléments de la tranche, la référence restera inchangée.

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