Maison >développement back-end >C++ >Pourquoi renvoyer une référence à une variable locale en C est-il considéré comme une mauvaise pratique ?

Pourquoi renvoyer une référence à une variable locale en C est-il considéré comme une mauvaise pratique ?

DDD
DDDoriginal
2024-12-05 08:48:14603parcourir

Why is Returning a Reference to a Local Variable in C   Considered Bad Practice?

Renvoyer une référence à une variable locale

L'extrait de code ci-dessous renvoie une référence à une variable locale, ce qui est généralement considéré comme une mauvaise pratique dans C :

int& foo() {
    int i = 6;
    return i;
}

Ce code fonctionnera comme prévu, attribuant la valeur de la variable locale i à i dans la fonction principale. Cependant, cela peut conduire à un comportement indéfini car la mémoire de la variable locale est libérée au retour de la fonction.

Vous vous demandez peut-être comment cela fonctionne toujours, puisque les variables locales sont supprimées de la mémoire de la pile au retour de la fonction. La raison en est que le cadre de pile de la fonction n'est pas toujours immédiatement effacé après son retour. Cela signifie que la référence renvoyée par foo() est toujours valide une fois l'exécution de la fonction terminée.

Vous devez être conscient que ce comportement n'est pas garanti et peut varier en fonction du compilateur et des paramètres d'optimisation. Par conséquent, il est préférable d'éviter de renvoyer des références à des variables locales et de renvoyer plutôt des copies des données si nécessaire.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn