Durée de vie garantie des objets temporaires en C
En C , une variable temporaire est créée lorsqu'une expression est évaluée à une valeur qui n'est pas stockée dans une variable nommée. Dans le code donné, un objet StringBuffer temporaire est créé dans l'appel de fonction GetString() :
StringBuffer(mystring).Size(MAXLEN)
La question se pose de savoir quand le destructeur de cet objet temporaire sera appelé :
Durée de vie des objets temporaires :
C garantit que la durée de vie d'un objet temporaire s'étend jusqu'à la fin de l'expression complète dans laquelle il est créé. Une expression complète est l’expression la plus externe qui ne fait partie d’aucune autre expression. Dans ce cas, l'expression complète est l'intégralité de l'appel de fonction GetString() :
GetString(StringBuffer(mystring).Size(MAXLEN), MAXLEN);
Temps de destruction :
Par conséquent, le destructeur de l'objet StringBuffer temporaire sera appelé après le retour de la fonction GetString() et la valeur est évaluée. Ce comportement est garanti par le standard C en 12.2 « Objets temporaires ».
Importance pour les modèles d'expression :
Cette garantie à vie est cruciale pour les modèles d'expression, qui peuvent contenir références à des objets temporaires dans des expressions. Par exemple, le modèle d'expression suivant :
e = a + b * c / d
Peut conserver les références aux objets temporaires créés par chaque opérande car la durée de vie de chaque objet temporaire s'étend jusqu'à la fin de l'expression entière.
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!