Во-первых, код, указанный ниже.
#include<string>
#include<stdio.h>
int main(){
const char *cs;
{
std::string s("123456");
cs = s.c_str();
printf("cs = %s\n",cs);
}
printf("cs = %s\n",cs);
return 0;
}
, запустите его и получите следующий результат. (Linux g cc)
cs = 123456
cs = 123456
Итак, я не знаю, почему указатель cs действителен после s уничтожен. другими словами, время жизни указателя, указывающего на функцию c_str в std :: string.