Heim >Backend-Entwicklung >C++ >Wie kann man in C sicher einen Zeiger auf eine lokale Variable zurückgeben?
So geben Sie einen Zeiger auf eine lokale Variable in C zurück
In C wird im Allgemeinen davon abgeraten, einen Zeiger auf eine lokale Variable zurückzugeben , da der Speicherplatz der Variablen möglicherweise freigegeben wird, wenn die Funktion beendet wird. In bestimmten Szenarien kann es jedoch erforderlich sein, dies zu erreichen.
Stellen Sie sich ein Szenario vor, in dem Sie eine Funktion erstellen müssen, die einen Zeiger auf eine Ganzzahl zurückgibt:
int *count() { int myInt = 5; int * const p = &myInt; // Pointer to the local variable return p; }
In diesem Fall , entsteht das Problem, weil die Variable myInt beim Beenden der Funktion zerstört wird und der Zeiger auf einen ungültigen Speicherort zeigt.
Um dieses Problem zu beheben, können Sie smart verwenden Zeiger, die den der Variablen zugewiesenen Speicher automatisch verwalten. Sie können beispielsweise einen unique_ptr verwenden:
unique_ptr<int> count() { unique_ptr<int> value(new int(5)); return value; }
Hier ist value ein unique_ptr, der den Speicher für die dynamisch zugewiesene Ganzzahl verwaltet. Dadurch wird sichergestellt, dass der Speicher der Ganzzahl beim Beenden der Funktion nicht freigegeben wird, sodass Sie über den zurückgegebenen Zeiger darauf zugreifen können:
cout << "Value is " << *count() << endl;
Das obige ist der detaillierte Inhalt vonWie kann man in C sicher einen Zeiger auf eine lokale Variable zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!