可能重复:
Lifetime of temporaries
我假设std::string::c_str()
返回指向某些内部(std::string
)数据的指针。如果不是,假装这是真的。在下文中,name
设置为指向此内部数据。 std::string
返回的GetString()
何时被销毁,导致名称无效?
#include <string>
#include <stdio.h>
using namespace std;
string GetString() {return string("TheString");}
int main(int argc, const char* argv[])
{
const char* name = GetString().c_str();
printf("name = %s\n",name);
}
// Should print "name = TheString"