Rückkehr ist eine C++ - std::string-Objekts sicher von memory leaks?

Ich bin ziemlich Anfänger mit C++ - strings, so dass die folgenden Muster kann ein wenig fugly. Ich bin der überprüfung einige code, den ich geschrieben habe, bevor Anfang Integrationstest mit einem größeren system. Was ich wissen möchte ist, ob es sicher ist, oder ob es anfällig für Speicherlecks?

string somefunc( void ) {
    string returnString;
    returnString.assign( "A string" );
    return returnString;
}

void anotherfunc( void ) {
    string myString;
    myString.assign( somefunc() );
    //...
    return;
}

Verständnis, das ich habe ist, dass der Wert der returnString zugewiesen ist, ein neues Objekt myString und dann die returnString Objekt zerstört wird, als Teil der Lösung der Aufruf von somefunc. Irgendwann in der Zukunft, wenn myString geht out of scope, es ist auch zerstört.

Hätte ich normalerweise übergeben Sie einen Zeiger auf myString in somefunc() und direkt zugeordnete Werte myString, aber ich bin bemüht zu sein, ein wenig klarer in meinem code ( und sich auf der Seite Effekt-Funktion, Stil weniger ).

  • In der ersten Funktion, könnten Sie wahrscheinlich tun Sie einfach "return string("string");" und das gleiche Ergebnis.
  • Dies ist ein Vereinfachtes Beispiel, um das problem zu veranschaulichen.
  • auch return "A string"; ist in Ordnung, da std::string sind bebaubar mit c-strings.
  • Stimmt, ich vergaß.
InformationsquelleAutor Stephen | 2011-08-22
Schreibe einen Kommentar