En ce qui concerne l'allocation et l'initialisation des variables, le timing peut varier en fonction de la portée de la variable. Les variables globales, comme mentionné, sont allouées au démarrage du programme. Mais qu'en est-il des variables statiques déclarées dans les fonctions ?
Dans le scénario donné, la variable statique globalish est allouée au démarrage du programme, comme les variables globales. En effet, les variables statiques ont une durée de vie plus longue que les variables locales, conservant leurs valeurs même lorsque la fonction dans laquelle elles sont définies se termine.
Le moment d'initialisation des variables statiques est où les choses deviennent intéressantes. Contrairement aux variables globales, les variables statiques ne sont pas initialisées au démarrage du programme. Au lieu de cela, ils sont initialisés uniquement lorsque la fonction à laquelle ils appartiennent est appelée pour la première fois. Ce comportement est évident dans l'exemple de programme fourni :
void doSomething() { static bool globalish = true; // Initialization occurs here // ... }
Dans ce cas, l'initialisation de globalish se produit lorsque doSomething() est exécuté pour la première fois, et non au moment du démarrage du programme. Cette initialisation tardive est appelée « initialisation paresseuse ».
La raison de cette initialisation retardée est d'éviter une initialisation inutile pour des variables statiques qui ne peuvent jamais être utilisées. Si le programme n'appelle jamais la fonction qui déclare la variable statique, il économise de la mémoire et du temps de calcul en ne l'initialisant pas.
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!