Comment renvoyer un pointeur vers une variable locale en C
En C , il est généralement déconseillé de renvoyer un pointeur vers une variable locale , car l'espace mémoire de la variable peut être libéré à la fin de la fonction. Cependant, dans certains scénarios, cela peut être nécessaire pour y parvenir.
Considérez un scénario dans lequel vous devez créer une fonction qui renvoie un pointeur vers un entier :
int *count() { int myInt = 5; int * const p = &myInt; // Pointer to the local variable return p; }
Dans ce cas , le problème se pose car la variable myInt est détruite à la fin de la fonction, laissant le pointeur pointer vers un emplacement mémoire non valide.
Pour résoudre ce problème, vous pouvez utilisez des pointeurs intelligents, qui gèrent automatiquement la mémoire allouée à la variable. Par exemple, vous pouvez utiliser un unique_ptr :
unique_ptr<int> count() { unique_ptr<int> value(new int(5)); return value; }
Ici, value est un unique_ptr qui gère la mémoire pour l'entier alloué dynamiquement. Cela garantit que la mémoire de l'entier ne sera pas désallouée à la sortie de la fonction, vous permettant d'y accéder via le pointeur renvoyé :
cout << "Value is " << *count() << endl;
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!