Ja, aber das üblichere C ++ - Idiom für diese Situation ist die Verwendung einer Referenz (und wahrscheinlich einer Konstantenreferenz) anstelle eines Zeigers. Also statt
%Vor%Sie schreiben:
%Vor%Das hat den Vorteil, dass Sie das Objekt im Aufrufer nicht dereferenzieren müssen:
%Vor%und gibt dem Leser auch einen unterschwelligen Hinweis, dass Sie nicht beabsichtigen, dass die Funktion das Eigentum an dem Objekt übernimmt.
Wenn Sie sicher sind, dass der Aufruf synchron ist, ist es absolut zulässig, die Adresse des Stack-zugewiesenen Objekts an die Funktion zu senden. Wenn der Aufruf asynchron ist (dh die Funktion, die Sie aufgerufen haben, übergibt den Zeiger an einen anderen Thread), entstehen Probleme, da Sie möglicherweise versuchen, auf die Speicheradresse des anderen Threads zuzugreifen, selbst nachdem das zugeordnete Stack-Objekt gelöscht wurde. p>
Solange die empfangende Funktion nicht davon ausgeht, dass sie Eigentümer der Ressource wird (und versucht, sie freizugeben), sicher. Eine Referenz könnte jedoch eine bessere Idee sein.
Sie sollten darauf achten, diesen Zeiger nicht für die weitere Verwendung zu speichern. Zum Beispiel:
%Vor%Es ist sicherlich gültig, aber mit vielen Vorbehalten. Hier sind die wichtigsten Dinge zu beachten (einige bereits von anderen erwähnt, andere nicht.)
Tags und Links c++ function parameters