>>214 で質問した者なんですが

stringstream ss;
ss << "0123456789";
const char* p;
p = ss.str().c_str();
cout << p[2];

みたいにすると、ちゃんと2が出力されるのですが
ss.str.c_str()
はss.str()で生成した一時オブジェクトのポインタを返しているのに、なぜちゃんと2が出力されるんでしょうか??
ss.str()で生成した一時オブジェクトは、その部分を過ぎたら消えてしまうのではないかと思っていたのですが、違うのでしょうか??