На что указывает указатель, возвращаемый вызовом 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