function_call(std::string("TestString").c_str()) erlaubt???
-
naja wie bereits der titel sagt, wollte ich fragen, ob sowas "sicher" ist:
void f( const char* szString ) { std::cout << szString << std::endl; } int main() { f(std::string("TestString").c_str()); return 0; }Das problem was ich hierbei meine ist, dass der temporäre std::string eventuell gelöscht werden kann, bevor std::cout ausgeführt wird... oder was sagt der C++ standard dazu (habe mal versucht was im standard zu finden, aber ich wusste nicht so recht nach was ich suchen musste).
Denn theoretisch muss der std::string nur so lange leben, bis c_str() ausgeführt wurde, dann wird der pointer an die funktion f() übergeben, und der std::string kann doch theoretisch direkt danach sterben, oder ist es auf alle fälle garantiert, dass alle objekte die bei einem funktionsaufruf erstellt werden, so lange leben, bis die funktion beendet ist?Gruß
Jocker
-
Jo, das Objekt exisitert so lange bis der Ausdruck vollständig abgearbeitet wird, d.h. das funktioniert so einwandfrei
