string :: c_str query

На что указывает указатель, возвращаемый вызовом string :: c_str ()? В следующем фрагменте кода Я думал, что дам ошибку сегментации, но это дает мне правильный результат. Если указатель, возвращаемый функцией string :: c_str (), указывает на внутреннее расположение внутри строкового объекта, то при возврате функции и вызове деструктора объекта я должен получить недопустимый доступ к памяти.

#include <iostream>
#include <string>
using namespace std;

const char* func()
{
    string str("test");
    return str.c_str();
}

int main()
{
    const char* p = func();
    cout << p << endl;
    return 0;
}

Output: test
Compiler: g++ 4.3.3
Platform: ubuntu 2.6.28-19
6
задан Tanuj 22 October 2010 в 04:19
поделиться